diff --git a/README-en.md b/README-en.md index 29acb1cc..2aed4fce 100644 --- a/README-en.md +++ b/README-en.md @@ -374,6 +374,3 @@ If you find this project useful, you can buy author a glass of juice :tropical_d If you use this project for commercial purposes, please comply with the Apache2.0 agreement and retain the author's technical support statement. -## 11.Links - -A high performance web and rpc framework, with powerful code generator. [go-zero](https://github.com/tal-tech/go-zero) diff --git a/README.md b/README.md index 963f5840..b66509a9 100644 --- a/README.md +++ b/README.md @@ -364,7 +364,3 @@ swag init ## 10. 商用注意事项 如果您将此项目用于商业用途,请遵守Apache2.0协议并保留作者技术支持声明。 - -## 11. 友情推荐 - -内置强大代码生成器的高性能微服务框架 [go-zero](https://github.com/tal-tech/go-zero) diff --git a/server/api/v1/sys_user.go b/server/api/v1/sys_user.go index f804b71e..0b898760 100644 --- a/server/api/v1/sys_user.go +++ b/server/api/v1/sys_user.go @@ -130,7 +130,7 @@ func tokenNext(c *gin.Context, user model.SysUser) { response.FailWithMessage("jwt作废失败", c) return } - if err := service.SetRedisJWT(jwtStr, user.Username); err != nil { + if err := service.SetRedisJWT(token, user.Username); err != nil { response.FailWithMessage("设置登录状态失败", c) return } diff --git a/server/core/server.go b/server/core/server.go index e7fc3a4d..92db53c7 100644 --- a/server/core/server.go +++ b/server/core/server.go @@ -29,7 +29,7 @@ func RunWindowsServer() { fmt.Printf(` 欢迎使用 Gin-Vue-Admin - 当前版本:V2.3.2 + 当前版本:V2.3.3 默认自动化文档地址:http://127.0.0.1%s/swagger/index.html 默认前端文件运行地址:http://127.0.0.1:8080 `, address) diff --git a/web/package-lock.json b/web/package-lock.json index de7cfe24..76cd5447 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -4480,12 +4480,11 @@ "integrity": "sha1-8OAD2cqef1nHpQiUXXsu+aBKVC8=" }, "axios": { - "version": "0.19.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.0.tgz", - "integrity": "sha512-1uvKqKQta3KBxIz14F2v06AEHZ/dIoeKfbTRkK1E5oqjDnuEerLmYTgJB5AiQZHJcljpg1TuRzdjDR06qNk0DQ==", + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", "requires": { - "follow-redirects": "1.5.10", - "is-buffer": "^2.0.2" + "follow-redirects": "1.5.10" }, "dependencies": { "debug": { @@ -4504,11 +4503,6 @@ "debug": "=3.1.0" } }, - "is-buffer": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.3.tgz", - "integrity": "sha512-U15Q7MXTuZlrbymiz95PJpZxu8IlipAp4dtS3wOdgPXx3mqBnslrWU14kxfHB+Py/+2PVKSr37dMAgM2A4uArw==" - }, "ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", diff --git a/web/package.json b/web/package.json index 4f5194cb..f3077039 100644 --- a/web/package.json +++ b/web/package.json @@ -3,13 +3,13 @@ "version": "0.1.0", "private": true, "scripts": { - "serve": "vue-cli-service serve", + "serve": "start https://www.gin-vue-admin.com && vue-cli-service serve", "build": "vue-cli-service build", "lint": "vue-cli-service lint" }, "dependencies": { "@moefe/vue-aplayer": "^2.0.0-beta.5", - "axios": "^0.19.0", + "axios": "^0.19.2", "core-js": "^3.6.5", "echarts": "^4.7.0", "element-ui": "^2.12.0", @@ -65,4 +65,4 @@ "> 1%", "last 2 versions" ] -} +} \ No newline at end of file diff --git a/web/public/index.html b/web/public/index.html index cee31e39..c891a74d 100644 --- a/web/public/index.html +++ b/web/public/index.html @@ -3,6 +3,7 @@ + @@ -17,4 +18,4 @@ - \ No newline at end of file + diff --git a/web/src/api/system.js b/web/src/api/system.js index 870c1e6e..622685db 100644 --- a/web/src/api/system.js +++ b/web/src/api/system.js @@ -7,10 +7,10 @@ import service from "@/utils/request"; // @Success 200 {string} string "{"success":true,"data":{},"msg":"返回成功"}" // @Router /system/getSystemConfig [post] export const getSystemConfig = () => { - return service({ - url: "/system/getSystemConfig", - method: "post", - }); + return service({ + url: "/system/getSystemConfig", + method: "post", + }); }; // @Tags system @@ -21,11 +21,11 @@ export const getSystemConfig = () => { // @Success 200 {string} string "{"success":true,"data":{},"msg":"返回成功"}" // @Router /system/setSystemConfig [post] export const setSystemConfig = (data) => { - return service({ - url: "/system/setSystemConfig", - method: "post", - data, - }); + return service({ + url: "/system/setSystemConfig", + method: "post", + data, + }); }; // @Tags system @@ -35,8 +35,9 @@ export const setSystemConfig = (data) => { // @Success 200 {string} string "{"success":true,"data":{},"msg":"返回成功"}" // @Router /system/getServerInfo [post] export const getSystemState = () => { - return service({ - url: "/system/getServerInfo", - method: "post", - }); -}; + return service({ + url: "/system/getServerInfo", + method: "post", + donNotShowLoading: true + }); +}; \ No newline at end of file diff --git a/web/src/components/upload/image.vue b/web/src/components/upload/image.vue new file mode 100644 index 00000000..c5c9d92e --- /dev/null +++ b/web/src/components/upload/image.vue @@ -0,0 +1,100 @@ + + + + + + \ No newline at end of file diff --git a/web/src/main.js b/web/src/main.js index 97243f2a..085b2493 100644 --- a/web/src/main.js +++ b/web/src/main.js @@ -66,7 +66,7 @@ Vue.prototype.$echarts = echarts; console.log(` 欢迎使用 Gin-Vue-Admin - 当前版本:V2.3.2 + 当前版本:V2.3.3 默认自动化文档地址:http://127.0.0.1%s/swagger/index.html 默认前端文件运行地址:http://127.0.0.1:8080 `) \ No newline at end of file diff --git a/web/src/utils/image.js b/web/src/utils/image.js new file mode 100644 index 00000000..48154a85 --- /dev/null +++ b/web/src/utils/image.js @@ -0,0 +1,94 @@ +export default class ImageCompress { + constructor(file, fileSize, maxWH = 1920) { + this.file = file + this.fileSize = fileSize + this.maxWH = maxWH // 最大长宽 + } + + compress() { + // 压缩 + const fileType = this.file.type + const fileSize = this.file.size / 1024 + return new Promise(resolve => { + const reader = new FileReader(); + reader.readAsDataURL(this.file); + reader.onload = () => { + const canvas = document.createElement('canvas'); + const img = document.createElement('img'); + img.src = reader.result; + img.onload = () => { + const ctx = canvas.getContext('2d'); + let _dWH = this.dWH(img.width, img.height, this.maxWH) + canvas.width = _dWH.width + canvas.height = _dWH.height + + // 清空后, 重写画布 + ctx.clearRect(0, 0, canvas.width, canvas.height) + ctx.drawImage(img, 0, 0, canvas.width, canvas.height) + + let newImgData = canvas.toDataURL(fileType, 0.90) + + // 压缩宽高后的图像大小 + let newImgSize = this.fileSizeKB(newImgData) + + if (newImgSize > this.fileSize) { + console.log('图片尺寸太大!' + fileSize + " >> " + newImgSize) + } + + let blob = this.dataURLtoBlob(newImgData, fileType) + let nfile = new File([blob], this.file.name); + resolve(nfile) + }; + }; + }); + } + + /* + * 长宽等比缩小 + * 图像的一边(长或宽)为最大目标值 + * */ + dWH(srcW, srcH, dMax) { + + let defaults = { + width: srcW, + height: srcH + } + if (Math.max(srcW, srcH) > dMax) { + if (srcW > srcH) { + defaults.width = dMax + defaults.height = Math.round(srcH * (dMax / srcW)) + return defaults + } else { + defaults.height = dMax + defaults.width = Math.round(srcW * (dMax / srcH)) + return defaults + } + } else { + return defaults + } + } + + fileSizeKB(dataURL) { + let sizeKB = 0 + sizeKB = Math.round((dataURL.split(',')[1].length * 3 / 4) / 1024) + return sizeKB + } + + /* + * 转为Blob + * */ + dataURLtoBlob(dataURL, fileType) { + let byteString = atob(dataURL.split(',')[1]) + let mimeString = dataURL.split(',')[0].split(':')[1].split(';')[0] + let ab = new ArrayBuffer(byteString.length) + let ia = new Uint8Array(ab) + for (let i = 0; i < byteString.length; i++) { + ia[i] = byteString.charCodeAt(i) + } + if (fileType) { + mimeString = fileType + } + return new Blob([ab], { type: mimeString, lastModifiedDate: new Date() }) + } + +} \ No newline at end of file diff --git a/web/src/utils/request.js b/web/src/utils/request.js index c3524db5..8821cd61 100644 --- a/web/src/utils/request.js +++ b/web/src/utils/request.js @@ -30,7 +30,10 @@ const closeLoading = () => { //http request 拦截器 service.interceptors.request.use( config => { - showLoading() + console.log(config) + if (!config.donNotShowLoading) { + showLoading() + } const token = store.getters['user/token'] const user = store.getters['user/userInfo'] config.data = JSON.stringify(config.data); diff --git a/web/src/view/example/upload/upload.vue b/web/src/view/example/upload/upload.vue index 7e3eaa17..c1dfdec1 100644 --- a/web/src/view/example/upload/upload.vue +++ b/web/src/view/example/upload/upload.vue @@ -1,23 +1,33 @@