From ff563c44e257c5921ec6d4647b590d7455edeeb5 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期三, 18 十一月 2020 10:41:13 +0800 Subject: [PATCH] Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue --- ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java | 3 ruoyi-framework/pom.xml | 2 ruoyi-admin/pom.xml | 2 ruoyi-system/pom.xml | 2 ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java | 43 ++++-- ruoyi-ui/src/views/index.vue | 16 ++ ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java | 65 ++++++++++ ruoyi-generator/src/main/resources/vm/vue/index.vue.vm | 22 +++ ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileTypeUtils.java | 47 +++++++ ruoyi-generator/pom.xml | 2 pom.xml | 4 ruoyi-admin/src/main/resources/application.yml | 4 ruoyi-common/pom.xml | 2 ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java | 2 ruoyi-quartz/pom.xml | 2 ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm | 16 ++ ruoyi-ui/package.json | 2 ruoyi-ui/src/components/UploadImage/index.vue | 68 +++++++++++ ruoyi-ui/src/views/tool/gen/editTable.vue | 1 ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java | 5 20 files changed, 276 insertions(+), 34 deletions(-) diff --git a/pom.xml b/pom.xml index cfa7552..a57fc28 100644 --- a/pom.xml +++ b/pom.xml @@ -6,14 +6,14 @@ <groupId>com.ruoyi</groupId> <artifactId>ruoyi</artifactId> - <version>3.2.0</version> + <version>3.2.1</version> <name>ruoyi</name> <url>http://www.ruoyi.vip</url> <description>鑻ヤ緷绠$悊绯荤粺</description> <properties> - <ruoyi.version>3.2.0</ruoyi.version> + <ruoyi.version>3.2.1</ruoyi.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index da3aa62..3257d8c 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -5,7 +5,7 @@ <parent> <artifactId>ruoyi</artifactId> <groupId>com.ruoyi</groupId> - <version>3.2.0</version> + <version>3.2.1</version> </parent> <modelVersion>4.0.0</modelVersion> <packaging>jar</packaging> diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java index f02b6d3..e0c728f 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CommonController.java @@ -5,6 +5,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.MediaType; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RestController; @@ -41,17 +42,15 @@ { try { - if (!FileUtils.isValidFilename(fileName)) + if (!FileUtils.checkAllowDownload(fileName)) { throw new Exception(StringUtils.format("鏂囦欢鍚嶇О({})闈炴硶锛屼笉鍏佽涓嬭浇銆� ", fileName)); } String realFileName = System.currentTimeMillis() + fileName.substring(fileName.indexOf("_") + 1); String filePath = RuoYiConfig.getDownloadPath() + fileName; - response.setCharacterEncoding("utf-8"); - response.setContentType("multipart/form-data"); - response.setHeader("Content-Disposition", - "attachment;fileName=" + FileUtils.setFileDownloadHeader(request, realFileName)); + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); + FileUtils.setAttachmentResponseHeader(response, realFileName); FileUtils.writeBytes(filePath, response.getOutputStream()); if (delete) { @@ -92,18 +91,28 @@ * 鏈湴璧勬簮閫氱敤涓嬭浇 */ @GetMapping("/common/download/resource") - public void resourceDownload(String name, HttpServletRequest request, HttpServletResponse response) throws Exception + public void resourceDownload(String resource, HttpServletRequest request, HttpServletResponse response) + throws Exception { - // 鏈湴璧勬簮璺緞 - String localPath = RuoYiConfig.getProfile(); - // 鏁版嵁搴撹祫婧愬湴鍧� - String downloadPath = localPath + StringUtils.substringAfter(name, Constants.RESOURCE_PREFIX); - // 涓嬭浇鍚嶇О - String downloadName = StringUtils.substringAfterLast(downloadPath, "/"); - response.setCharacterEncoding("utf-8"); - response.setContentType("multipart/form-data"); - response.setHeader("Content-Disposition", - "attachment;fileName=" + FileUtils.setFileDownloadHeader(request, downloadName)); - FileUtils.writeBytes(downloadPath, response.getOutputStream()); + try + { + if (!FileUtils.checkAllowDownload(resource)) + { + throw new Exception(StringUtils.format("璧勬簮鏂囦欢({})闈炴硶锛屼笉鍏佽涓嬭浇銆� ", resource)); + } + // 鏈湴璧勬簮璺緞 + String localPath = RuoYiConfig.getProfile(); + // 鏁版嵁搴撹祫婧愬湴鍧� + String downloadPath = localPath + StringUtils.substringAfter(resource, Constants.RESOURCE_PREFIX); + // 涓嬭浇鍚嶇О + String downloadName = StringUtils.substringAfterLast(downloadPath, "/"); + response.setContentType(MediaType.APPLICATION_OCTET_STREAM_VALUE); + FileUtils.setAttachmentResponseHeader(response, downloadName); + FileUtils.writeBytes(downloadPath, response.getOutputStream()); + } + catch (Exception e) + { + log.error("涓嬭浇鏂囦欢澶辫触", e); + } } } diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index c205d3a..394380b 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -3,7 +3,7 @@ # 鍚嶇О name: RuoYi # 鐗堟湰 - version: 3.2.0 + version: 3.2.1 # 鐗堟潈骞翠唤 copyrightYear: 2020 # 瀹炰緥婕旂ず寮�鍏� @@ -70,7 +70,7 @@ secret: abcdefghijklmnopqrstuvwxyz # 浠ょ墝鏈夋晥鏈燂紙榛樿30鍒嗛挓锛� expireTime: 30 - + # MyBatis閰嶇疆 # https://baomidou.com/config/ mybatis-plus: diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index 46823fe..35adaa3 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -5,7 +5,7 @@ <parent> <artifactId>ruoyi</artifactId> <groupId>com.ruoyi</groupId> - <version>3.2.0</version> + <version>3.2.1</version> </parent> <modelVersion>4.0.0</modelVersion> diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java b/ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java index 29b28e1..7bcaced 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java @@ -74,6 +74,9 @@ /** 鏃ユ湡鎺т欢 */ public static final String HTML_DATETIME = "datetime"; + /** 涓婁紶鎺т欢 */ + public static final String HTML_UPLOAD_IMAGE = "uploadImage"; + /** 瀵屾枃鏈帶浠� */ public static final String HTML_EDITOR = "editor"; diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileTypeUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileTypeUtils.java new file mode 100644 index 0000000..65be65b --- /dev/null +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileTypeUtils.java @@ -0,0 +1,47 @@ +package com.ruoyi.common.utils.file; + +import java.io.File; +import org.apache.commons.lang3.StringUtils; + +/** + * 鏂囦欢绫诲瀷宸ュ叿绫� + * + * @author ruoyi + */ +public class FileTypeUtils +{ + /** + * 鑾峰彇鏂囦欢绫诲瀷 + * <p> + * 渚嬪: ruoyi.txt, 杩斿洖: txt + * + * @param file 鏂囦欢鍚� + * @return 鍚庣紑锛堜笉鍚�".") + */ + public static String getFileType(File file) + { + if (null == file) + { + return StringUtils.EMPTY; + } + return getFileType(file.getName()); + } + + /** + * 鑾峰彇鏂囦欢绫诲瀷 + * <p> + * 渚嬪: ruoyi.txt, 杩斿洖: txt + * + * @param fileName 鏂囦欢鍚� + * @return 鍚庣紑锛堜笉鍚�".") + */ + public static String getFileType(String fileName) + { + int separatorIndex = fileName.lastIndexOf("."); + if (separatorIndex < 0) + { + return ""; + } + return fileName.substring(separatorIndex + 1).toLowerCase(); + } +} \ No newline at end of file diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java index d144072..66c9f24 100644 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java +++ b/ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUtils.java @@ -7,7 +7,11 @@ import java.io.OutputStream; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; +import java.nio.charset.StandardCharsets; import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.apache.commons.lang3.ArrayUtils; +import com.ruoyi.common.utils.StringUtils; /** * 鏂囦欢澶勭悊宸ュ叿绫� @@ -105,14 +109,37 @@ } /** + * 妫�鏌ユ枃浠舵槸鍚﹀彲涓嬭浇 + * + * @param resource 闇�瑕佷笅杞界殑鏂囦欢 + * @return true 姝e父 false 闈炴硶 + */ + public static boolean checkAllowDownload(String resource) + { + // 绂佹鐩綍涓婅烦绾у埆 + if (StringUtils.contains(resource, "..")) + { + return false; + } + + // 妫�鏌ュ厑璁镐笅杞界殑鏂囦欢瑙勫垯 + if (ArrayUtils.contains(MimeTypeUtils.DEFAULT_ALLOWED_EXTENSION, FileTypeUtils.getFileType(resource))) + { + return true; + } + + // 涓嶅湪鍏佽涓嬭浇鐨勬枃浠惰鍒� + return false; + } + + /** * 涓嬭浇鏂囦欢鍚嶉噸鏂扮紪鐮� * * @param request 璇锋眰瀵硅薄 * @param fileName 鏂囦欢鍚� * @return 缂栫爜鍚庣殑鏂囦欢鍚� */ - public static String setFileDownloadHeader(HttpServletRequest request, String fileName) - throws UnsupportedEncodingException + public static String setFileDownloadHeader(HttpServletRequest request, String fileName) throws UnsupportedEncodingException { final String agent = request.getHeader("USER-AGENT"); String filename = fileName; @@ -139,4 +166,38 @@ } return filename; } + + /** + * 涓嬭浇鏂囦欢鍚嶉噸鏂扮紪鐮� + * + * @param response 鍝嶅簲瀵硅薄 + * @param realFileName 鐪熷疄鏂囦欢鍚� + * @return + */ + public static void setAttachmentResponseHeader(HttpServletResponse response, String realFileName) throws UnsupportedEncodingException + { + String percentEncodedFileName = percentEncode(realFileName); + + StringBuilder contentDispositionValue = new StringBuilder(); + contentDispositionValue.append("attachment; filename=") + .append(percentEncodedFileName) + .append(";") + .append("filename*=") + .append("utf-8''") + .append(percentEncodedFileName); + + response.setHeader("Content-disposition", contentDispositionValue.toString()); + } + + /** + * 鐧惧垎鍙风紪鐮佸伐鍏锋柟娉� + * + * @param s 闇�瑕佺櫨鍒嗗彿缂栫爜鐨勫瓧绗︿覆 + * @return 鐧惧垎鍙风紪鐮佸悗鐨勫瓧绗︿覆 + */ + public static String percentEncode(String s) throws UnsupportedEncodingException + { + String encode = URLEncoder.encode(s, StandardCharsets.UTF_8.toString()); + return encode.replaceAll("\\+", "%20"); + } } diff --git a/ruoyi-framework/pom.xml b/ruoyi-framework/pom.xml index e8f79c2..61af7c0 100644 --- a/ruoyi-framework/pom.xml +++ b/ruoyi-framework/pom.xml @@ -5,7 +5,7 @@ <parent> <artifactId>ruoyi</artifactId> <groupId>com.ruoyi</groupId> - <version>3.2.0</version> + <version>3.2.1</version> </parent> <modelVersion>4.0.0</modelVersion> diff --git a/ruoyi-generator/pom.xml b/ruoyi-generator/pom.xml index 43d1245..58abab1 100644 --- a/ruoyi-generator/pom.xml +++ b/ruoyi-generator/pom.xml @@ -5,7 +5,7 @@ <parent> <artifactId>ruoyi</artifactId> <groupId>com.ruoyi</groupId> - <version>3.2.0</version> + <version>3.2.1</version> </parent> <modelVersion>4.0.0</modelVersion> diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java index a96d273..23b069a 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/domain/GenTableColumn.java @@ -59,7 +59,7 @@ /** 鏌ヨ鏂瑰紡锛圗Q绛変簬銆丯E涓嶇瓑浜庛�丟T澶т簬銆丩T灏忎簬銆丩IKE妯$硦銆丅ETWEEN鑼冨洿锛� */ private String queryType; - /** 鏄剧ず绫诲瀷锛坕nput鏂囨湰妗嗐�乼extarea鏂囨湰鍩熴�乻elect涓嬫媺妗嗐�乧heckbox澶嶉�夋銆乺adio鍗曢�夋銆乨atetime鏃ユ湡鎺т欢銆乪ditor瀵屾枃鏈帶浠讹級 */ + /** 鏄剧ず绫诲瀷锛坕nput鏂囨湰妗嗐�乼extarea鏂囨湰鍩熴�乻elect涓嬫媺妗嗐�乧heckbox澶嶉�夋銆乺adio鍗曢�夋銆乨atetime鏃ユ湡鎺т欢銆乽pload涓婁紶鎺т欢銆乪ditor瀵屾枃鏈帶浠讹級 */ private String htmlType; /** 瀛楀吀绫诲瀷 */ diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java index 43fc71d..da78d03 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java @@ -111,6 +111,11 @@ { column.setHtmlType(GenConstants.HTML_SELECT); } + // 鏂囦欢瀛楁璁剧疆涓婁紶鎺т欢 + else if (StringUtils.endsWithIgnoreCase(columnName, "image")) + { + column.setHtmlType(GenConstants.HTML_UPLOAD_IMAGE); + } // 鍐呭瀛楁璁剧疆瀵屾枃鏈帶浠� else if (StringUtils.endsWithIgnoreCase(columnName, "content")) { diff --git a/ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm b/ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm index e139a13..e433934 100644 --- a/ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm +++ b/ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm @@ -139,6 +139,10 @@ <el-form-item label="${comment}" prop="${field}"> <el-input v-model="form.${field}" placeholder="璇疯緭鍏�${comment}" /> </el-form-item> +#elseif($column.htmlType == "uploadImage") + <el-form-item label="${comment}"> + <uploadImage v-model="form.${field}"/> + </el-form-item> #elseif($column.htmlType == "editor") <el-form-item label="${comment}"> <editor v-model="form.${field}" :min-height="192"/> @@ -226,6 +230,12 @@ import Treeselect from "@riophae/vue-treeselect"; import "@riophae/vue-treeselect/dist/vue-treeselect.css"; #foreach($column in $columns) +#if($column.insert && !$column.superColumn && !$column.pk && $column.htmlType == "uploadImage") +import UploadImage from '@/components/UploadImage'; +#break +#end +#end +#foreach($column in $columns) #if($column.insert && !$column.superColumn && !$column.pk && $column.htmlType == "editor") import Editor from '@/components/Editor'; #break @@ -236,6 +246,12 @@ name: "${BusinessName}", components: { #foreach($column in $columns) +#if($column.insert && !$column.superColumn && !$column.pk && $column.htmlType == "uploadImage") + UploadImage, +#break +#end +#end +#foreach($column in $columns) #if($column.insert && !$column.superColumn && !$column.pk && $column.htmlType == "editor") Editor, #break diff --git a/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm b/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm index 129c176..aa973b1 100644 --- a/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm +++ b/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm @@ -168,6 +168,10 @@ <el-form-item label="${comment}" prop="${field}"> <el-input v-model="form.${field}" placeholder="璇疯緭鍏�${comment}" /> </el-form-item> +#elseif($column.htmlType == "uploadImage") + <el-form-item label="${comment}"> + <uploadImage v-model="form.${field}"/> + </el-form-item> #elseif($column.htmlType == "editor") <el-form-item label="${comment}"> <editor v-model="form.${field}" :min-height="192"/> @@ -253,6 +257,12 @@ <script> import { list${BusinessName}, get${BusinessName}, del${BusinessName}, add${BusinessName}, update${BusinessName}, export${BusinessName} } from "@/api/${moduleName}/${businessName}"; #foreach($column in $columns) +#if($column.insert && !$column.superColumn && !$column.pk && $column.htmlType == "uploadImage") +import UploadImage from '@/components/UploadImage'; +#break +#end +#end +#foreach($column in $columns) #if($column.insert && !$column.superColumn && !$column.pk && $column.htmlType == "editor") import Editor from '@/components/Editor'; #break @@ -261,12 +271,20 @@ export default { name: "${BusinessName}", + components: { #foreach($column in $columns) -#if($column.insert && !$column.superColumn && !$column.pk && $column.htmlType == "editor") - components: { Editor }, +#if($column.insert && !$column.superColumn && !$column.pk && $column.htmlType == "uploadImage") + UploadImage, #break #end #end +#foreach($column in $columns) +#if($column.insert && !$column.superColumn && !$column.pk && $column.htmlType == "editor") + Editor, +#break +#end +#end + }, data() { return { // 閬僵灞� diff --git a/ruoyi-quartz/pom.xml b/ruoyi-quartz/pom.xml index ae6abe8..15a5bc2 100644 --- a/ruoyi-quartz/pom.xml +++ b/ruoyi-quartz/pom.xml @@ -5,7 +5,7 @@ <parent> <artifactId>ruoyi</artifactId> <groupId>com.ruoyi</groupId> - <version>3.2.0</version> + <version>3.2.1</version> </parent> <modelVersion>4.0.0</modelVersion> diff --git a/ruoyi-system/pom.xml b/ruoyi-system/pom.xml index 95717f7..ef2cd72 100644 --- a/ruoyi-system/pom.xml +++ b/ruoyi-system/pom.xml @@ -5,7 +5,7 @@ <parent> <artifactId>ruoyi</artifactId> <groupId>com.ruoyi</groupId> - <version>3.2.0</version> + <version>3.2.1</version> </parent> <modelVersion>4.0.0</modelVersion> diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json index c9cf69e..bb15443 100644 --- a/ruoyi-ui/package.json +++ b/ruoyi-ui/package.json @@ -1,6 +1,6 @@ { "name": "ruoyi", - "version": "3.2.0", + "version": "3.2.1", "description": "鑻ヤ緷绠$悊绯荤粺", "author": "鑻ヤ緷", "license": "MIT", diff --git a/ruoyi-ui/src/components/UploadImage/index.vue b/ruoyi-ui/src/components/UploadImage/index.vue new file mode 100644 index 0000000..3941006 --- /dev/null +++ b/ruoyi-ui/src/components/UploadImage/index.vue @@ -0,0 +1,68 @@ +<template> + <div class="component-upload-image"> + <el-upload + :action="uploadImgUrl" + list-type="picture-card" + :on-success="handleUploadSuccess" + :before-upload="handleBeforeUpload" + :on-error="handleUploadError" + name="file" + :show-file-list="false" + :headers="headers" + style="display: inline-block; vertical-align: top" + > + <img v-if="value" :src="value" class="avatar" /> + <i v-else class="el-icon-plus avatar-uploader-icon"></i> + </el-upload> + </div> +</template> + +<script> +import { getToken } from "@/utils/auth"; + +export default { + components: {}, + data() { + return { + uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 涓婁紶鐨勫浘鐗囨湇鍔″櫒鍦板潃 + headers: { + Authorization: "Bearer " + getToken(), + }, + }; + }, + props: { + value: { + type: String, + default: "", + }, + }, + methods: { + handleUploadSuccess(res) { + this.$emit("input", res.url); + this.loading.close(); + }, + handleBeforeUpload() { + this.loading = this.$loading({ + lock: true, + text: "涓婁紶涓�", + background: "rgba(0, 0, 0, 0.7)", + }); + }, + handleUploadError() { + this.$message({ + type: "error", + message: "涓婁紶澶辫触", + }); + this.loading.close(); + }, + }, + watch: {}, +}; +</script> + +<style scoped lang="scss"> +.avatar { + width: 100%; + height: 100%; +} +</style> \ No newline at end of file diff --git a/ruoyi-ui/src/views/index.vue b/ruoyi-ui/src/views/index.vue index c50687c..55f3439 100644 --- a/ruoyi-ui/src/views/index.vue +++ b/ruoyi-ui/src/views/index.vue @@ -146,6 +146,20 @@ <span>鏇存柊鏃ュ織</span> </div> <el-collapse accordion> + <el-collapse-item title="v3.2.1 - 2020-11-18"> + <ol> + <li>闃绘浠绘剰鏂囦欢涓嬭浇婕忔礊</li> + <li>浠g爜鐢熸垚鏀寔涓婁紶鎺т欢</li> + <li>鏂板鍥剧墖涓婁紶缁勪欢</li> + <li>璋冩暣榛樿棣栭〉</li> + <li>鍗囩骇druid鍒版渶鏂扮増鏈瑅1.2.2</li> + <li>mapperLocations閰嶇疆鏀寔鍒嗛殧绗�</li> + <li>鏉冮檺淇℃伅璋冩暣</li> + <li>璋冩暣sql榛樿鏃堕棿</li> + <li>瑙e喅浠g爜鐢熸垚娌℃湁bit绫诲瀷鐨勯棶棰�</li> + <li>鍗囩骇pagehelper鍒版渶鏂扮増1.3.0</li> + </ol> + </el-collapse-item> <el-collapse-item title="v3.2.0 - 2020-10-10"> <ol> <li>鍗囩骇springboot鐗堟湰鍒�2.1.17 鎻愬崌瀹夊叏鎬�</li> @@ -421,7 +435,7 @@ data() { return { // 鐗堟湰鍙� - version: "3.2.0", + version: "3.2.1", }; }, methods: { diff --git a/ruoyi-ui/src/views/tool/gen/editTable.vue b/ruoyi-ui/src/views/tool/gen/editTable.vue index 3469545..9ecab45 100644 --- a/ruoyi-ui/src/views/tool/gen/editTable.vue +++ b/ruoyi-ui/src/views/tool/gen/editTable.vue @@ -90,6 +90,7 @@ <el-option label="鍗曢�夋" value="radio" /> <el-option label="澶嶉�夋" value="checkbox" /> <el-option label="鏃ユ湡鎺т欢" value="datetime" /> + <el-option label="涓婁紶鎺т欢" value="uploadImage" /> <el-option label="瀵屾枃鏈帶浠�" value="editor" /> </el-select> </template> -- Gitblit v1.9.3