diff --git a/mayfly_go_web/package.json b/mayfly_go_web/package.json index b050f74a..2ba8baa3 100644 --- a/mayfly_go_web/package.json +++ b/mayfly_go_web/package.json @@ -13,7 +13,7 @@ "countup.js": "^2.0.7", "cropperjs": "^1.5.11", "echarts": "^5.4.0", - "element-plus": "^2.2.26", + "element-plus": "^2.2.29", "jsencrypt": "^3.2.1", "lodash": "^4.17.21", "mitt": "^3.0.0", @@ -44,10 +44,10 @@ "eslint": "^8.5.0", "eslint-plugin-vue": "^8.2.0", "prettier": "^2.3.0", - "sass": "^1.45.1", - "sass-loader": "^12.4.0", + "sass": "^1.58.0", + "sass-loader": "^13.2.0", "typescript": "^4.7.4", - "vite": "^4.0.4", + "vite": "^4.1.1", "vue-eslint-parser": "^8.0.1" }, "browserslist": [ diff --git a/mayfly_go_web/src/common/config.ts b/mayfly_go_web/src/common/config.ts index ebe330fc..befb7092 100644 --- a/mayfly_go_web/src/common/config.ts +++ b/mayfly_go_web/src/common/config.ts @@ -1,6 +1,14 @@ +function getBaseApiUrl() { + let path = window.location.pathname; + if (path == '/') { + return window.location.host; + } + return window.location.host + path; +} + const config = { - baseApiUrl: `${(window as any).globalConfig.BaseApiUrl}/api`, - baseWsUrl: `${(window as any).globalConfig.BaseWsUrl || `${location.protocol == 'https:' ? 'wss:' : 'ws:'}//${location.host}`}/api`, + baseApiUrl: `${(window as any).globalConfig.BaseApiUrl || location.protocol + '//' + getBaseApiUrl()}/api`, + baseWsUrl: `${(window as any).globalConfig.BaseWsUrl || `${location.protocol == 'https:' ? 'wss:' : 'ws:'}//${getBaseApiUrl()}`}/api`, // 系统版本 version: 'v1.3.1' diff --git a/mayfly_go_web/src/views/ops/db/SqlExec.vue b/mayfly_go_web/src/views/ops/db/SqlExec.vue index 8b1dc84c..579308a8 100644 --- a/mayfly_go_web/src/views/ops/db/SqlExec.vue +++ b/mayfly_go_web/src/views/ops/db/SqlExec.vue @@ -1,213 +1,231 @@ - + @@ -1849,12 +1870,14 @@ watch(()=>store.state.sqlExecInfo.dbOptInfo, () => { #data-exec { min-height: calc(100vh - 155px); - .el-tabs__header{ - margin: 0 0 5px; - .el-tabs__item{ - padding: 0 5px; + + .el-tabs__header { + margin: 0 0 5px; + + .el-tabs__item { + padding: 0 5px; + } } - } } .update_field_active { diff --git a/mayfly_go_web/src/views/ops/db/component/InstanceTree.vue b/mayfly_go_web/src/views/ops/db/component/InstanceTree.vue index a57dcb80..3289e454 100644 --- a/mayfly_go_web/src/views/ops/db/component/InstanceTree.vue +++ b/mayfly_go_web/src/views/ops/db/component/InstanceTree.vue @@ -1,163 +1,172 @@ \ No newline at end of file diff --git a/mayfly_go_web/src/views/ops/mongo/MongoInstanceTree.vue b/mayfly_go_web/src/views/ops/mongo/MongoInstanceTree.vue index 3922cde0..fe85f2ae 100644 --- a/mayfly_go_web/src/views/ops/mongo/MongoInstanceTree.vue +++ b/mayfly_go_web/src/views/ops/mongo/MongoInstanceTree.vue @@ -1,152 +1,153 @@ \ No newline at end of file diff --git a/mayfly_go_web/src/views/ops/redis/ListValue.vue b/mayfly_go_web/src/views/ops/redis/ListValue.vue index 1dbb1fc7..0122a174 100644 --- a/mayfly_go_web/src/views/ops/redis/ListValue.vue +++ b/mayfly_go_web/src/views/ops/redis/ListValue.vue @@ -122,7 +122,6 @@ const cancel = () => { watch(props, async (newValue: any) => { state.dialogVisible = newValue.visible; - state.key = newValue.key; state.redisId = newValue.redisId; state.db = newValue.db; state.key = newValue.keyInfo; diff --git a/mayfly_go_web/src/views/ops/redis/SetValue.vue b/mayfly_go_web/src/views/ops/redis/SetValue.vue index 8578dde8..fdc885ae 100644 --- a/mayfly_go_web/src/views/ops/redis/SetValue.vue +++ b/mayfly_go_web/src/views/ops/redis/SetValue.vue @@ -106,7 +106,6 @@ const cancel = () => { watch(props, async (newValue: any) => { state.dialogVisible = newValue.visible; - state.key = newValue.key; state.redisId = newValue.redisId; state.db = newValue.db; state.key = newValue.keyInfo; diff --git a/mayfly_go_web/src/views/ops/redis/StringValue.vue b/mayfly_go_web/src/views/ops/redis/StringValue.vue index 5b32181e..0a4ab52e 100644 --- a/mayfly_go_web/src/views/ops/redis/StringValue.vue +++ b/mayfly_go_web/src/views/ops/redis/StringValue.vue @@ -120,7 +120,6 @@ watch( watch(props, async (newValue: any) => { state.dialogVisible = newValue.visible; - state.key = newValue.key; state.redisId = newValue.redisId; state.db = newValue.db; state.key = newValue.keyInfo; diff --git a/mayfly_go_web/yarn.lock b/mayfly_go_web/yarn.lock index fba08f12..d190ff7c 100644 --- a/mayfly_go_web/yarn.lock +++ b/mayfly_go_web/yarn.lock @@ -772,10 +772,10 @@ echarts@^5.4.0: tslib "2.3.0" zrender "5.4.0" -element-plus@^2.2.26: - version "2.2.26" - resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.26.tgz#5e46aa5d8127786bb158713957f8a253b35bf019" - integrity sha512-O/rdY5m9DkclpVg8r3GynyqCunm7MxSR142xSsjrZA77bi7bcwA3SIy6SPEDqHi5R4KqgkGYgKSp4Q4e3irbYg== +element-plus@^2.2.29: + version "2.2.29" + resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.2.29.tgz#7dd72f9cafdc102ae3f9e4efe612e403ef713a74" + integrity sha512-g4dcrURrKkR5uUX8n5RVnnqGnimoki9HfqS4yHHG6XwCHBkZGozdq4x+478BzeWUe31h++BO+7dakSx4VnM8RQ== dependencies: "@ctrl/tinycolor" "^3.4.1" "@element-plus/icons-vue" "^2.0.6" @@ -800,7 +800,7 @@ enquirer@^2.3.5: dependencies: ansi-colors "^4.1.1" -esbuild@^0.16.3: +esbuild@^0.16.14: version "0.16.17" resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.16.17.tgz#fc2c3914c57ee750635fee71b89f615f25065259" integrity sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg== @@ -1451,7 +1451,7 @@ postcss@^8.1.10: picocolors "^1.0.0" source-map-js "^1.0.1" -postcss@^8.4.20: +postcss@^8.4.21: version "8.4.21" resolved "https://registry.npmmirror.com/postcss/-/postcss-8.4.21.tgz#c639b719a57efc3187b13a1d765675485f4134f4" integrity sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg== @@ -1533,10 +1533,10 @@ rimraf@^3.0.2: dependencies: glob "^7.1.3" -rollup@^3.7.0: - version "3.10.0" - resolved "https://registry.npmmirror.com/rollup/-/rollup-3.10.0.tgz#6eb19196d8b3b375ca651cb78261faac48e24cd6" - integrity sha512-JmRYz44NjC1MjVF2VKxc0M1a97vn+cDxeqWmnwyAF4FvpjK8YFdHpaqvQB+3IxCvX05vJxKZkoMDU8TShhmJVA== +rollup@^3.10.0: + version "3.12.1" + resolved "https://registry.npmmirror.com/rollup/-/rollup-3.12.1.tgz#2975b97713e4af98c15e7024b88292d7fddb3853" + integrity sha512-t9elERrz2i4UU9z7AwISj3CQcXP39cWxgRWLdf4Tm6aKm1eYrqHIgjzXBgb67GNY1sZckTFFi0oMozh3/S++Ig== optionalDependencies: fsevents "~2.3.2" @@ -1547,18 +1547,18 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" -sass-loader@^12.4.0: - version "12.4.0" - resolved "https://registry.npmmirror.com/sass-loader/download/sass-loader-12.4.0.tgz" - integrity sha512-7xN+8khDIzym1oL9XyS6zP6Ges+Bo2B2xbPrjdMHEYyV3AQYhd/wXeru++3ODHF0zMjYmVadblSKrPrjEkL8mg== +sass-loader@^13.2.0: + version "13.2.0" + resolved "https://registry.npmmirror.com/sass-loader/-/sass-loader-13.2.0.tgz#80195050f58c9aac63b792fa52acb6f5e0f6bdc3" + integrity sha512-JWEp48djQA4nbZxmgC02/Wh0eroSUutulROUusYJO9P9zltRbNN80JCBHqRGzjd4cmZCa/r88xgfkjGD0TXsHg== dependencies: klona "^2.0.4" neo-async "^2.6.2" -sass@^1.45.1: - version "1.48.0" - resolved "https://registry.npmmirror.com/sass/download/sass-1.48.0.tgz" - integrity sha512-hQi5g4DcfjcipotoHZ80l7GNJHGqQS5LwMBjVYB/TaT0vcSSpbgM8Ad7cgfsB2M0MinbkEQQPO9+sjjSiwxqmw== +sass@^1.58.0: + version "1.58.0" + resolved "https://registry.npmmirror.com/sass/-/sass-1.58.0.tgz#ee8aea3ad5ea5c485c26b3096e2df6087d0bb1cc" + integrity sha512-PiMJcP33DdKtZ/1jSjjqVIKihoDc6yWmYr9K/4r3fVVIEDAluD0q7XZiRKrNJcPK3qkLRF/79DND1H5q1LBjgg== dependencies: chokidar ">=3.0.0 <4.0.0" immutable "^4.0.0" @@ -1724,15 +1724,15 @@ v8-compile-cache@^2.0.3: resolved "https://registry.nlark.com/v8-compile-cache/download/v8-compile-cache-2.3.0.tgz" integrity sha1-LeGWGMZtwkfc+2+ZM4A12CRaLO4= -vite@^4.0.4: - version "4.0.4" - resolved "https://registry.npmmirror.com/vite/-/vite-4.0.4.tgz#4612ce0b47bbb233a887a54a4ae0c6e240a0da31" - integrity sha512-xevPU7M8FU0i/80DMR+YhgrzR5KS2ORy1B4xcX/cXLsvnUWvfHuqMmVU6N0YiJ4JWGRJJsLCgjEzKjG9/GKoSw== +vite@^4.1.1: + version "4.1.1" + resolved "https://registry.npmmirror.com/vite/-/vite-4.1.1.tgz#3b18b81a4e85ce3df5cbdbf4c687d93ebf402e6b" + integrity sha512-LM9WWea8vsxhr782r9ntg+bhSFS06FJgCvvB0+8hf8UWtvaiDagKYWXndjfX6kGl74keHJUcpzrQliDXZlF5yg== dependencies: - esbuild "^0.16.3" - postcss "^8.4.20" + esbuild "^0.16.14" + postcss "^8.4.21" resolve "^1.22.1" - rollup "^3.7.0" + rollup "^3.10.0" optionalDependencies: fsevents "~2.3.2" diff --git a/server/config.yml b/server/config.yml index a0aaee28..18bcefc9 100644 --- a/server/config.yml +++ b/server/config.yml @@ -21,7 +21,7 @@ mysql: host: localhost:3306 username: root password: 111049 - db-name: mayfly-go + db-name: mayfly_go config: charset=utf8&loc=Local&parseTime=true max-idle-conns: 5 # 若同时部署多台机器,则需要配置redis信息用于缓存权限码、验证码、公私钥等 diff --git a/server/go.mod b/server/go.mod index 183f602b..dadbd4c4 100644 --- a/server/go.mod +++ b/server/go.mod @@ -1,6 +1,6 @@ module mayfly-go -go 1.19 +go 1.20 require ( github.com/gin-gonic/gin v1.8.2 diff --git a/server/initialize/router.go b/server/initialize/router.go index 75b0fe1a..6a07438e 100644 --- a/server/initialize/router.go +++ b/server/initialize/router.go @@ -74,7 +74,6 @@ func InitRouter() *gin.Engine { sys_router.Init(api) - // project_router.Init(api) tag_router.Init(api) machine_router.Init(api) db_router.Init(api) diff --git a/server/internal/db/application/db.go b/server/internal/db/application/db.go index 1a0141a8..f3f366df 100644 --- a/server/internal/db/application/db.go +++ b/server/internal/db/application/db.go @@ -461,7 +461,7 @@ func valueConvert(data []byte, colType *sql.ColumnType) interface{} { return intV } } - if strings.Contains(colScanType, "float") { + if strings.Contains(colScanType, "float") || strings.Contains(colDatabaseTypeName, "decimal") { floatV, _ := strconv.ParseFloat(stringV, 64) return floatV } diff --git a/server/pkg/starter/gorm.go b/server/pkg/starter/gorm.go index 0f767429..4aa0ef5f 100644 --- a/server/pkg/starter/gorm.go +++ b/server/pkg/starter/gorm.go @@ -1,8 +1,11 @@ package starter import ( + "log" "mayfly-go/pkg/config" "mayfly-go/pkg/global" + "os" + "time" "gorm.io/driver/mysql" "gorm.io/gorm" @@ -30,10 +33,20 @@ func gormMysql() *gorm.DB { SkipInitializeWithVersion: false, // 根据版本自动配置 } + gormLogger := logger.New( + log.New(os.Stdout, "\r\n", log.LstdFlags), // io writer(日志输出的目标,前缀和日志包含的内容——译者注) + logger.Config{ + SlowThreshold: time.Second, // 慢 SQL 阈值 + LogLevel: logger.Error, // 日志级别, 改为logger.Info即可显示sql语句 + IgnoreRecordNotFoundError: true, // 忽略ErrRecordNotFound(记录未找到)错误 + Colorful: true, // 禁用彩色打印 + }, + ) + ormConfig := &gorm.Config{NamingStrategy: schema.NamingStrategy{ TablePrefix: "t_", SingularTable: true, - }, Logger: logger.Default.LogMode(logger.Error)} // 改为logger.Info即可显示sql语句 + }, Logger: gormLogger} if db, err := gorm.Open(mysql.New(mysqlConfig), ormConfig); err != nil { global.Log.Panicf("连接mysql失败! [%s]", err.Error())