diff --git a/server/api/v1/example/enter.go b/server/api/v1/example/enter.go
index 1a3ac1173..c182328ea 100644
--- a/server/api/v1/example/enter.go
+++ b/server/api/v1/example/enter.go
@@ -3,13 +3,11 @@ package example
import "github.com/flipped-aurora/gin-vue-admin/server/service"
type ApiGroup struct {
- ExcelApi
CustomerApi
FileUploadAndDownloadApi
}
var (
- excelService = service.ServiceGroupApp.ExampleServiceGroup.ExcelService
customerService = service.ServiceGroupApp.ExampleServiceGroup.CustomerService
fileUploadAndDownloadService = service.ServiceGroupApp.ExampleServiceGroup.FileUploadAndDownloadService
)
diff --git a/server/api/v1/example/exa_excel.go b/server/api/v1/example/exa_excel.go
deleted file mode 100644
index 8bfe100d3..000000000
--- a/server/api/v1/example/exa_excel.go
+++ /dev/null
@@ -1,120 +0,0 @@
-package example
-
-import (
- "os"
- "strings"
-
- "github.com/flipped-aurora/gin-vue-admin/server/global"
- "github.com/flipped-aurora/gin-vue-admin/server/model/common/response"
- "github.com/flipped-aurora/gin-vue-admin/server/model/example"
- "github.com/gin-gonic/gin"
- "go.uber.org/zap"
-)
-
-type ExcelApi struct{}
-
-// /excel/importExcel 接口,与upload接口作用类似,只是把文件存到resource/excel目录下,用于导入Excel时存放Excel文件(ExcelImport.xlsx)
-// /excel/loadExcel接口,用于读取resource/excel目录下的文件((ExcelImport.xlsx)并加载为[]model.SysBaseMenu类型的示例数据
-// /excel/exportExcel 接口,用于读取前端传来的tableData,生成Excel文件并返回
-// /excel/downloadTemplate 接口,用于下载resource/excel目录下的 ExcelTemplate.xlsx 文件,作为导入的模板
-
-// ExportExcel
-// @Tags excel
-// @Summary 导出Excel
-// @Security ApiKeyAuth
-// @accept application/json
-// @Produce application/octet-stream
-// @Param data body example.ExcelInfo true "导出Excel文件信息"
-// @Success 200
-// @Router /excel/exportExcel [post]
-func (e *ExcelApi) ExportExcel(c *gin.Context) {
- var excelInfo example.ExcelInfo
- err := c.ShouldBindJSON(&excelInfo)
- if err != nil {
- response.FailWithMessage(err.Error(), c)
- return
- }
- if strings.Index(excelInfo.FileName, "..") > -1 {
- response.FailWithMessage("包含非法字符", c)
- return
- }
- filePath := global.GVA_CONFIG.Excel.Dir + excelInfo.FileName
- err = excelService.ParseInfoList2Excel(excelInfo.InfoList, filePath)
- if err != nil {
- global.GVA_LOG.Error("转换Excel失败!", zap.Error(err))
- response.FailWithMessage("转换Excel失败", c)
- return
- }
- c.Writer.Header().Add("success", "true")
- c.File(filePath)
-}
-
-// ImportExcel
-// @Tags excel
-// @Summary 导入Excel文件
-// @Security ApiKeyAuth
-// @accept multipart/form-data
-// @Produce application/json
-// @Param file formData file true "导入Excel文件"
-// @Success 200 {object} response.Response{msg=string} "导入Excel文件"
-// @Router /excel/importExcel [post]
-func (e *ExcelApi) ImportExcel(c *gin.Context) {
- _, header, err := c.Request.FormFile("file")
- if err != nil {
- global.GVA_LOG.Error("接收文件失败!", zap.Error(err))
- response.FailWithMessage("接收文件失败", c)
- return
- }
- _ = c.SaveUploadedFile(header, global.GVA_CONFIG.Excel.Dir+"ExcelImport.xlsx")
- response.OkWithMessage("导入成功", c)
-}
-
-// LoadExcel
-// @Tags excel
-// @Summary 加载Excel数据
-// @Security ApiKeyAuth
-// @Produce application/json
-// @Success 200 {object} response.Response{data=response.PageResult,msg=string} "加载Excel数据,返回包括列表,总数,页码,每页数量"
-// @Router /excel/loadExcel [get]
-func (e *ExcelApi) LoadExcel(c *gin.Context) {
- menus, err := excelService.ParseExcel2InfoList()
- if err != nil {
- global.GVA_LOG.Error("加载数据失败!", zap.Error(err))
- response.FailWithMessage("加载数据失败", c)
- return
- }
- response.OkWithDetailed(response.PageResult{
- List: menus,
- Total: int64(len(menus)),
- Page: 1,
- PageSize: 999,
- }, "加载数据成功", c)
-}
-
-// DownloadTemplate
-// @Tags excel
-// @Summary 下载模板
-// @Security ApiKeyAuth
-// @accept multipart/form-data
-// @Produce application/json
-// @Param fileName query string true "模板名称"
-// @Success 200
-// @Router /excel/downloadTemplate [get]
-func (e *ExcelApi) DownloadTemplate(c *gin.Context) {
- fileName := c.Query("fileName")
- filePath := global.GVA_CONFIG.Excel.Dir + fileName
-
- fi, err := os.Stat(filePath)
- if err != nil {
- global.GVA_LOG.Error("文件不存在!", zap.Error(err))
- response.FailWithMessage("文件不存在", c)
- return
- }
- if fi.IsDir() {
- global.GVA_LOG.Error("不支持下载文件夹!", zap.Error(err))
- response.FailWithMessage("不支持下载文件夹", c)
- return
- }
- c.Writer.Header().Add("success", "true")
- c.File(filePath)
-}
diff --git a/server/go.mod b/server/go.mod
index 5f077f31c..441477873 100644
--- a/server/go.mod
+++ b/server/go.mod
@@ -33,7 +33,6 @@ require (
github.com/swaggo/swag v1.7.0
github.com/tencentyun/cos-go-sdk-v5 v0.7.19
github.com/unrolled/secure v1.0.7
- github.com/xuri/excelize/v2 v2.4.1
go.uber.org/zap v1.16.0
golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
diff --git a/server/initialize/router.go b/server/initialize/router.go
index 48b065cb0..15c5f7656 100644
--- a/server/initialize/router.go
+++ b/server/initialize/router.go
@@ -65,7 +65,6 @@ func Routers() *gin.Engine {
systemRouter.InitSysDictionaryDetailRouter(PrivateGroup) // 字典详情管理
systemRouter.InitAuthorityBtnRouterRouter(PrivateGroup) // 字典详情管理
- exampleRouter.InitExcelRouter(PrivateGroup) // 表格导入导出
exampleRouter.InitCustomerRouter(PrivateGroup) // 客户路由
exampleRouter.InitFileUploadAndDownloadRouter(PrivateGroup) // 文件上传下载功能路由
diff --git a/server/model/example/exa_excel.go b/server/model/example/exa_excel.go
deleted file mode 100644
index fa96569dc..000000000
--- a/server/model/example/exa_excel.go
+++ /dev/null
@@ -1,8 +0,0 @@
-package example
-
-import "github.com/flipped-aurora/gin-vue-admin/server/model/system"
-
-type ExcelInfo struct {
- FileName string `json:"fileName"` // 文件名
- InfoList []system.SysBaseMenu `json:"infoList"`
-}
diff --git a/server/resource/excel/ExcelExport.xlsx b/server/resource/excel/ExcelExport.xlsx
deleted file mode 100644
index 4f757819c..000000000
Binary files a/server/resource/excel/ExcelExport.xlsx and /dev/null differ
diff --git a/server/resource/excel/ExcelImport.xlsx b/server/resource/excel/ExcelImport.xlsx
deleted file mode 100644
index 6a6156dd8..000000000
Binary files a/server/resource/excel/ExcelImport.xlsx and /dev/null differ
diff --git a/server/resource/excel/ExcelTemplate.xlsx b/server/resource/excel/ExcelTemplate.xlsx
deleted file mode 100644
index d0d53e96d..000000000
Binary files a/server/resource/excel/ExcelTemplate.xlsx and /dev/null differ
diff --git a/server/router/example/enter.go b/server/router/example/enter.go
index 5608b8480..b1798c916 100644
--- a/server/router/example/enter.go
+++ b/server/router/example/enter.go
@@ -1,7 +1,6 @@
package example
type RouterGroup struct {
- ExcelRouter
CustomerRouter
FileUploadAndDownloadRouter
}
diff --git a/server/router/example/exa_excel.go b/server/router/example/exa_excel.go
deleted file mode 100644
index bee7fc786..000000000
--- a/server/router/example/exa_excel.go
+++ /dev/null
@@ -1,19 +0,0 @@
-package example
-
-import (
- v1 "github.com/flipped-aurora/gin-vue-admin/server/api/v1"
- "github.com/gin-gonic/gin"
-)
-
-type ExcelRouter struct{}
-
-func (e *ExcelRouter) InitExcelRouter(Router *gin.RouterGroup) {
- excelRouter := Router.Group("excel")
- exaExcelApi := v1.ApiGroupApp.ExampleApiGroup.ExcelApi
- {
- excelRouter.POST("importExcel", exaExcelApi.ImportExcel) // 导入Excel
- excelRouter.GET("loadExcel", exaExcelApi.LoadExcel) // 加载Excel数据
- excelRouter.POST("exportExcel", exaExcelApi.ExportExcel) // 导出Excel
- excelRouter.GET("downloadTemplate", exaExcelApi.DownloadTemplate) // 下载模板文件
- }
-}
diff --git a/server/service/example/enter.go b/server/service/example/enter.go
index f9bd07a30..c5a7ddaa2 100644
--- a/server/service/example/enter.go
+++ b/server/service/example/enter.go
@@ -1,7 +1,6 @@
package example
type ServiceGroup struct {
- ExcelService
CustomerService
FileUploadAndDownloadService
}
diff --git a/server/service/example/exa_excel_parse.go b/server/service/example/exa_excel_parse.go
deleted file mode 100644
index b011b71c6..000000000
--- a/server/service/example/exa_excel_parse.go
+++ /dev/null
@@ -1,94 +0,0 @@
-package example
-
-import (
- "errors"
- "fmt"
- "strconv"
-
- "github.com/flipped-aurora/gin-vue-admin/server/global"
- "github.com/flipped-aurora/gin-vue-admin/server/model/system"
- "github.com/xuri/excelize/v2"
-)
-
-type ExcelService struct{}
-
-func (exa *ExcelService) ParseInfoList2Excel(infoList []system.SysBaseMenu, filePath string) error {
- excel := excelize.NewFile()
- excel.SetSheetRow("Sheet1", "A1", &[]string{"ID", "路由Name", "路由Path", "是否隐藏", "父节点", "排序", "文件名称"})
- for i, menu := range infoList {
- axis := fmt.Sprintf("A%d", i+2)
- excel.SetSheetRow("Sheet1", axis, &[]interface{}{
- menu.ID,
- menu.Name,
- menu.Path,
- menu.Hidden,
- menu.ParentId,
- menu.Sort,
- menu.Component,
- })
- }
- err := excel.SaveAs(filePath)
- return err
-}
-
-func (exa *ExcelService) ParseExcel2InfoList() ([]system.SysBaseMenu, error) {
- skipHeader := true
- fixedHeader := []string{"ID", "路由Name", "路由Path", "是否隐藏", "父节点", "排序", "文件名称"}
- file, err := excelize.OpenFile(global.GVA_CONFIG.Excel.Dir + "ExcelImport.xlsx")
- if err != nil {
- return nil, err
- }
- menus := make([]system.SysBaseMenu, 0)
- rows, err := file.Rows("Sheet1")
- if err != nil {
- return nil, err
- }
- for rows.Next() {
- row, err := rows.Columns()
- if err != nil {
- return nil, err
- }
- if skipHeader {
- if exa.compareStrSlice(row, fixedHeader) {
- skipHeader = false
- continue
- } else {
- return nil, errors.New("Excel格式错误")
- }
- }
- if len(row) != len(fixedHeader) {
- continue
- }
- id, _ := strconv.Atoi(row[0])
- hidden, _ := strconv.ParseBool(row[3])
- sort, _ := strconv.Atoi(row[5])
- menu := system.SysBaseMenu{
- GVA_MODEL: global.GVA_MODEL{
- ID: uint(id),
- },
- Name: row[1],
- Path: row[2],
- Hidden: hidden,
- ParentId: row[4],
- Sort: sort,
- Component: row[6],
- }
- menus = append(menus, menu)
- }
- return menus, nil
-}
-
-func (exa *ExcelService) compareStrSlice(a, b []string) bool {
- if len(a) != len(b) {
- return false
- }
- if (b == nil) != (a == nil) {
- return false
- }
- for key, value := range a {
- if value != b[key] {
- return false
- }
- }
- return true
-}
diff --git a/server/service/system/sys_auto_code.go b/server/service/system/sys_auto_code.go
index 8e0eb84f2..9712c8c2f 100644
--- a/server/service/system/sys_auto_code.go
+++ b/server/service/system/sys_auto_code.go
@@ -403,9 +403,9 @@ func (autoCodeService *AutoCodeService) GetAllTplFile(pathName string, fileList
func (autoCodeService *AutoCodeService) DropTable(BusinessDb, tableName string) error {
if BusinessDb != "" {
- return global.GVA_DB.Exec("DROP TABLE " + tableName).Error
- } else {
return global.MustGetGlobalDBByDBName(BusinessDb).Exec("DROP TABLE " + tableName).Error
+ } else {
+ return global.GVA_DB.Exec("DROP TABLE " + tableName).Error
}
}
diff --git a/server/source/system/api.go b/server/source/system/api.go
index 9bc153803..a12d625e6 100644
--- a/server/source/system/api.go
+++ b/server/source/system/api.go
@@ -148,11 +148,6 @@ func (i *initApi) InitializeData(ctx context.Context) (context.Context, error) {
{ApiGroup: "email", Method: "POST", Path: "/email/emailTest", Description: "发送测试邮件"},
{ApiGroup: "email", Method: "POST", Path: "/email/emailSend", Description: "发送邮件示例"},
- {ApiGroup: "excel", Method: "POST", Path: "/excel/importExcel", Description: "导入excel"},
- {ApiGroup: "excel", Method: "GET", Path: "/excel/loadExcel", Description: "下载excel"},
- {ApiGroup: "excel", Method: "POST", Path: "/excel/exportExcel", Description: "导出excel"},
- {ApiGroup: "excel", Method: "GET", Path: "/excel/downloadTemplate", Description: "下载excel模板"},
-
{ApiGroup: "按钮权限", Method: "POST", Path: "/authorityBtn/setAuthorityBtn", Description: "设置按钮权限"},
{ApiGroup: "按钮权限", Method: "POST", Path: "/authorityBtn/getAuthorityBtn", Description: "获取已有按钮权限"},
{ApiGroup: "按钮权限", Method: "POST", Path: "/authorityBtn/canRemoveAuthorityBtn", Description: "删除按钮"},
diff --git a/server/source/system/authorities_menus.go b/server/source/system/authorities_menus.go
index d58cdad36..1c9058b88 100644
--- a/server/source/system/authorities_menus.go
+++ b/server/source/system/authorities_menus.go
@@ -45,10 +45,7 @@ func (i *initMenuAuthority) InitializeData(ctx context.Context) (next context.Co
}
next = ctx
// 888
- if err = db.Model(&authorities[0]).Association("SysBaseMenus").Replace(menus[:20]); err != nil {
- return next, err
- }
- if err = db.Model(&authorities[0]).Association("SysBaseMenus").Append(menus[21:]); err != nil {
+ if err = db.Model(&authorities[0]).Association("SysBaseMenus").Replace(menus); err != nil {
return next, err
}
@@ -60,10 +57,10 @@ func (i *initMenuAuthority) InitializeData(ctx context.Context) (next context.Co
}
// 9528
- if err = db.Model(&authorities[2]).Association("SysBaseMenus").Replace(menus[:12]); err != nil {
+ if err = db.Model(&authorities[2]).Association("SysBaseMenus").Replace(menus[:11]); err != nil {
return next, err
}
- if err = db.Model(&authorities[2]).Association("SysBaseMenus").Append(menus[13:17]); err != nil {
+ if err = db.Model(&authorities[2]).Association("SysBaseMenus").Append(menus[12:17]); err != nil {
return next, err
}
return next, nil
diff --git a/server/source/system/casbin.go b/server/source/system/casbin.go
index 43d524e42..412435d92 100644
--- a/server/source/system/casbin.go
+++ b/server/source/system/casbin.go
@@ -148,11 +148,6 @@ func (i *initCasbin) InitializeData(ctx context.Context) (context.Context, error
{Ptype: "p", V0: "888", V1: "/simpleUploader/checkFileMd5", V2: "GET"},
{Ptype: "p", V0: "888", V1: "/simpleUploader/mergeFileMd5", V2: "GET"},
- {Ptype: "p", V0: "888", V1: "/excel/importExcel", V2: "POST"},
- {Ptype: "p", V0: "888", V1: "/excel/loadExcel", V2: "GET"},
- {Ptype: "p", V0: "888", V1: "/excel/exportExcel", V2: "POST"},
- {Ptype: "p", V0: "888", V1: "/excel/downloadTemplate", V2: "GET"},
-
{Ptype: "p", V0: "888", V1: "/authorityBtn/setAuthorityBtn", V2: "POST"},
{Ptype: "p", V0: "888", V1: "/authorityBtn/getAuthorityBtn", V2: "POST"},
{Ptype: "p", V0: "888", V1: "/authorityBtn/canRemoveAuthorityBtn", V2: "POST"},
diff --git a/server/source/system/menu.go b/server/source/system/menu.go
index d16a42cbf..abd16ef1e 100644
--- a/server/source/system/menu.go
+++ b/server/source/system/menu.go
@@ -57,30 +57,28 @@ func (i *initMenu) InitializeData(ctx context.Context) (next context.Context, er
{MenuLevel: 0, Hidden: false, ParentId: "3", Path: "menu", Name: "menu", Component: "view/superAdmin/menu/menu.vue", Sort: 2, Meta: Meta{Title: "菜单管理", Icon: "tickets", KeepAlive: true}},
{MenuLevel: 0, Hidden: false, ParentId: "3", Path: "api", Name: "api", Component: "view/superAdmin/api/api.vue", Sort: 3, Meta: Meta{Title: "api管理", Icon: "platform", KeepAlive: true}},
{MenuLevel: 0, Hidden: false, ParentId: "3", Path: "user", Name: "user", Component: "view/superAdmin/user/user.vue", Sort: 4, Meta: Meta{Title: "用户管理", Icon: "coordinate"}},
- {MenuLevel: 0, Hidden: true, ParentId: "0", Path: "person", Name: "person", Component: "view/person/person.vue", Sort: 4, Meta: Meta{Title: "个人信息", Icon: "message"}},
- {MenuLevel: 0, Hidden: false, ParentId: "0", Path: "example", Name: "example", Component: "view/example/index.vue", Sort: 7, Meta: Meta{Title: "示例文件", Icon: "management"}},
- {MenuLevel: 0, Hidden: false, ParentId: "9", Path: "excel", Name: "excel", Component: "view/example/excel/excel.vue", Sort: 4, Meta: Meta{Title: "excel导入导出", Icon: "takeaway-box"}},
- {MenuLevel: 0, Hidden: false, ParentId: "9", Path: "upload", Name: "upload", Component: "view/example/upload/upload.vue", Sort: 5, Meta: Meta{Title: "媒体库(上传下载)", Icon: "upload"}},
- {MenuLevel: 0, Hidden: false, ParentId: "9", Path: "breakpoint", Name: "breakpoint", Component: "view/example/breakpoint/breakpoint.vue", Sort: 6, Meta: Meta{Title: "断点续传", Icon: "upload-filled"}},
- {MenuLevel: 0, Hidden: false, ParentId: "9", Path: "customer", Name: "customer", Component: "view/example/customer/customer.vue", Sort: 7, Meta: Meta{Title: "客户列表(资源示例)", Icon: "avatar"}},
- {MenuLevel: 0, Hidden: false, ParentId: "0", Path: "systemTools", Name: "systemTools", Component: "view/systemTools/index.vue", Sort: 5, Meta: Meta{Title: "系统工具", Icon: "tools"}},
- {MenuLevel: 0, Hidden: false, ParentId: "14", Path: "autoCode", Name: "autoCode", Component: "view/systemTools/autoCode/index.vue", Sort: 1, Meta: Meta{Title: "代码生成器", Icon: "cpu", KeepAlive: true}},
- {MenuLevel: 0, Hidden: false, ParentId: "14", Path: "formCreate", Name: "formCreate", Component: "view/systemTools/formCreate/index.vue", Sort: 2, Meta: Meta{Title: "表单生成器", Icon: "magic-stick", KeepAlive: true}},
- {MenuLevel: 0, Hidden: false, ParentId: "14", Path: "system", Name: "system", Component: "view/systemTools/system/system.vue", Sort: 3, Meta: Meta{Title: "系统配置", Icon: "operation"}},
{MenuLevel: 0, Hidden: false, ParentId: "3", Path: "dictionary", Name: "dictionary", Component: "view/superAdmin/dictionary/sysDictionary.vue", Sort: 5, Meta: Meta{Title: "字典管理", Icon: "notebook"}},
{MenuLevel: 0, Hidden: true, ParentId: "3", Path: "dictionaryDetail/:id", Name: "dictionaryDetail", Component: "view/superAdmin/dictionary/sysDictionaryDetail.vue", Sort: 1, Meta: Meta{Title: "字典详情-${id}", Icon: "list", ActiveName: "dictionary"}},
{MenuLevel: 0, Hidden: false, ParentId: "3", Path: "operation", Name: "operation", Component: "view/superAdmin/operation/sysOperationRecord.vue", Sort: 6, Meta: Meta{Title: "操作历史", Icon: "pie-chart"}},
- {MenuLevel: 0, Hidden: false, ParentId: "9", Path: "simpleUploader", Name: "simpleUploader", Component: "view/example/simpleUploader/simpleUploader", Sort: 6, Meta: Meta{Title: "断点续传(插件版)", Icon: "upload"}},
+ {MenuLevel: 0, Hidden: true, ParentId: "0", Path: "person", Name: "person", Component: "view/person/person.vue", Sort: 4, Meta: Meta{Title: "个人信息", Icon: "message"}},
+ {MenuLevel: 0, Hidden: false, ParentId: "0", Path: "example", Name: "example", Component: "view/example/index.vue", Sort: 7, Meta: Meta{Title: "示例文件", Icon: "management"}},
+ {MenuLevel: 0, Hidden: false, ParentId: "12", Path: "upload", Name: "upload", Component: "view/example/upload/upload.vue", Sort: 5, Meta: Meta{Title: "媒体库(上传下载)", Icon: "upload"}},
+ {MenuLevel: 0, Hidden: false, ParentId: "12", Path: "breakpoint", Name: "breakpoint", Component: "view/example/breakpoint/breakpoint.vue", Sort: 6, Meta: Meta{Title: "断点续传", Icon: "upload-filled"}},
+ {MenuLevel: 0, Hidden: false, ParentId: "12", Path: "customer", Name: "customer", Component: "view/example/customer/customer.vue", Sort: 7, Meta: Meta{Title: "客户列表(资源示例)", Icon: "avatar"}},
+ {MenuLevel: 0, Hidden: false, ParentId: "0", Path: "systemTools", Name: "systemTools", Component: "view/systemTools/index.vue", Sort: 5, Meta: Meta{Title: "系统工具", Icon: "tools"}},
+ {MenuLevel: 0, Hidden: false, ParentId: "16", Path: "autoCode", Name: "autoCode", Component: "view/systemTools/autoCode/index.vue", Sort: 1, Meta: Meta{Title: "代码生成器", Icon: "cpu", KeepAlive: true}},
+ {MenuLevel: 0, Hidden: false, ParentId: "16", Path: "formCreate", Name: "formCreate", Component: "view/systemTools/formCreate/index.vue", Sort: 2, Meta: Meta{Title: "表单生成器", Icon: "magic-stick", KeepAlive: true}},
+ {MenuLevel: 0, Hidden: false, ParentId: "16", Path: "system", Name: "system", Component: "view/systemTools/system/system.vue", Sort: 3, Meta: Meta{Title: "系统配置", Icon: "operation"}},
+ {MenuLevel: 0, Hidden: false, ParentId: "16", Path: "autoCodeAdmin", Name: "autoCodeAdmin", Component: "view/systemTools/autoCodeAdmin/index.vue", Sort: 1, Meta: Meta{Title: "自动化代码管理", Icon: "magic-stick"}},
+ {MenuLevel: 0, Hidden: true, ParentId: "16", Path: "autoCodeEdit/:id", Name: "autoCodeEdit", Component: "view/systemTools/autoCode/index.vue", Sort: 0, Meta: Meta{Title: "自动化代码-${id}", Icon: "magic-stick"}},
+ {MenuLevel: 0, Hidden: false, ParentId: "16", Path: "autoPkg", Name: "autoPkg", Component: "view/systemTools/autoPkg/autoPkg.vue", Sort: 0, Meta: Meta{Title: "自动化package", Icon: "folder"}},
{MenuLevel: 0, Hidden: false, ParentId: "0", Path: "https://www.gin-vue-admin.com", Name: "https://www.gin-vue-admin.com", Component: "/", Sort: 0, Meta: Meta{Title: "官方网站", Icon: "home-filled"}},
{MenuLevel: 0, Hidden: false, ParentId: "0", Path: "state", Name: "state", Component: "view/system/state.vue", Sort: 8, Meta: Meta{Title: "服务器状态", Icon: "cloudy"}},
- {MenuLevel: 0, Hidden: false, ParentId: "14", Path: "autoCodeAdmin", Name: "autoCodeAdmin", Component: "view/systemTools/autoCodeAdmin/index.vue", Sort: 1, Meta: Meta{Title: "自动化代码管理", Icon: "magic-stick"}},
- {MenuLevel: 0, Hidden: true, ParentId: "14", Path: "autoCodeEdit/:id", Name: "autoCodeEdit", Component: "view/systemTools/autoCode/index.vue", Sort: 0, Meta: Meta{Title: "自动化代码-${id}", Icon: "magic-stick"}},
- {MenuLevel: 0, Hidden: false, ParentId: "14", Path: "autoPkg", Name: "autoPkg", Component: "view/systemTools/autoPkg/autoPkg.vue", Sort: 0, Meta: Meta{Title: "自动化package", Icon: "folder"}},
{MenuLevel: 0, Hidden: false, ParentId: "0", Path: "plugin", Name: "plugin", Component: "view/routerHolder.vue", Sort: 6, Meta: Meta{Title: "插件系统", Icon: "cherry"}},
- {MenuLevel: 0, Hidden: false, ParentId: "27", Path: "https://plugin.gin-vue-admin.com/", Name: "https://plugin.gin-vue-admin.com/", Component: "https://plugin.gin-vue-admin.com/", Sort: 0, Meta: Meta{Title: "插件市场", Icon: "shop"}},
- {MenuLevel: 0, Hidden: false, ParentId: "27", Path: "installPlugin", Name: "installPlugin", Component: "view/systemTools/installPlugin/index.vue", Sort: 1, Meta: Meta{Title: "插件安装", Icon: "box"}},
- {MenuLevel: 0, Hidden: false, ParentId: "27", Path: "autoPlug", Name: "autoPlug", Component: "view/systemTools/autoPlug/autoPlug.vue", Sort: 2, Meta: Meta{Title: "插件模板", Icon: "folder"}},
- {MenuLevel: 0, Hidden: false, ParentId: "27", Path: "plugin-email", Name: "plugin-email", Component: "plugin/email/view/index.vue", Sort: 3, Meta: Meta{Title: "邮件插件", Icon: "message"}},
+ {MenuLevel: 0, Hidden: false, ParentId: "25", Path: "https://plugin.gin-vue-admin.com/", Name: "https://plugin.gin-vue-admin.com/", Component: "https://plugin.gin-vue-admin.com/", Sort: 0, Meta: Meta{Title: "插件市场", Icon: "shop"}},
+ {MenuLevel: 0, Hidden: false, ParentId: "25", Path: "installPlugin", Name: "installPlugin", Component: "view/systemTools/installPlugin/index.vue", Sort: 1, Meta: Meta{Title: "插件安装", Icon: "box"}},
+ {MenuLevel: 0, Hidden: false, ParentId: "25", Path: "autoPlug", Name: "autoPlug", Component: "view/systemTools/autoPlug/autoPlug.vue", Sort: 2, Meta: Meta{Title: "插件模板", Icon: "folder"}},
+ {MenuLevel: 0, Hidden: false, ParentId: "25", Path: "plugin-email", Name: "plugin-email", Component: "plugin/email/view/index.vue", Sort: 3, Meta: Meta{Title: "邮件插件", Icon: "message"}},
}
if err = db.Create(&entities).Error; err != nil {
return ctx, errors.Wrap(err, SysBaseMenu{}.TableName()+"表数据初始化失败!")
diff --git a/web/src/api/excel.js b/web/src/api/excel.js
deleted file mode 100644
index e00254357..000000000
--- a/web/src/api/excel.js
+++ /dev/null
@@ -1,85 +0,0 @@
-import service from '@/utils/request'
-import { ElMessage } from 'element-plus'
-
-const handleFileError = (res, fileName) => {
- if (typeof (res.data) !== 'undefined') {
- if (res.data.type === 'application/json') {
- const reader = new FileReader()
- reader.onload = function() {
- const message = JSON.parse(reader.result).msg
- ElMessage({
- showClose: true,
- message: message,
- type: 'error'
- })
- }
- reader.readAsText(new Blob([res.data]))
- }
- } else {
- var downloadUrl = window.URL.createObjectURL(new Blob([res]))
- var a = document.createElement('a')
- a.style.display = 'none'
- a.href = downloadUrl
- a.download = fileName
- var event = new MouseEvent('click')
- a.dispatchEvent(event)
- }
-}
-
-// @Tags excel
-// @Summary 导出Excel
-// @Security ApiKeyAuth
-// @accept application/json
-// @Produce application/octet-stream
-// @Param data body model.ExcelInfo true "导出Excel文件信息"
-// @Success 200
-// @Router /excel/exportExcel [post]
-export const exportExcel = (tableData, fileName) => {
- service({
- url: '/excel/exportExcel',
- method: 'post',
- data: {
- fileName: fileName,
- infoList: tableData
- },
- responseType: 'blob'
- }).then((res) => {
- handleFileError(res, fileName)
- })
-}
-
-// @Tags excel
-// @Summary 导入Excel文件
-// @Security ApiKeyAuth
-// @accept multipart/form-data
-// @Produce application/json
-// @Param file formData file true "导入Excel文件"
-// @Success 200 {string} string "{"success":true,"data":{},"msg":"导入成功"}"
-// @Router /excel/importExcel [post]
-export const loadExcelData = () => {
- return service({
- url: '/excel/loadExcel',
- method: 'get'
- })
-}
-
-// @Tags excel
-// @Summary 下载模板
-// @Security ApiKeyAuth
-// @accept multipart/form-data
-// @Produce application/json
-// @Param fileName query fileName true "模板名称"
-// @Success 200
-// @Router /excel/downloadTemplate [get]
-export const downloadTemplate = (fileName) => {
- return service({
- url: '/excel/downloadTemplate',
- method: 'get',
- params: {
- fileName: fileName
- },
- responseType: 'blob'
- }).then((res) => {
- handleFileError(res, fileName)
- })
-}
diff --git a/web/src/view/example/excel/excel.vue b/web/src/view/example/excel/excel.vue
deleted file mode 100644
index 688aa776e..000000000
--- a/web/src/view/example/excel/excel.vue
+++ /dev/null
@@ -1,93 +0,0 @@
-
-
-
-
-
-
- 导入
-
- 导出
- 下载模板
-
-
-
-
-
-
-
-
- {{ scope.row.hidden?"隐藏":"显示" }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-