Commit 020535ab3aa95063f1446a4a1422145bc0c09d30

Authored by xingyu
Committed by Gitee
2 parents a6a01fcb b5d458f1

Merge branch 'master' of gitee.com:zhijiantianya/ruoyi-vue-pro into master

Signed-off-by: xingyu <xingyu4j@vip.qq.com>
sql/optional/mall/mall.sql
@@ -253,7 +253,7 @@ create table product_sku @@ -253,7 +253,7 @@ create table product_sku
253 collate utf8mb4_general_ci; 253 collate utf8mb4_general_ci;
254 254
255 255
256 ----Market-Banner管理SQL 256 +-- Market-Banner管理SQL
257 drop table if exists market_banner; 257 drop table if exists market_banner;
258 CREATE TABLE `market_banner` ( 258 CREATE TABLE `market_banner` (
259 `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'Banner编号', 259 `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'Banner编号',
@@ -273,7 +273,7 @@ CREATE TABLE `market_banner` ( @@ -273,7 +273,7 @@ CREATE TABLE `market_banner` (
273 ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='Banner管理'; 273 ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='Banner管理';
274 -- 菜单 SQL 274 -- 菜单 SQL
275 INSERT INTO `system_menu`(`id`,`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`) 275 INSERT INTO `system_menu`(`id`,`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`)
276 -VALUES (2002, 'Banner管理', '', 2, 1, 2000, 'brand', '', 'mall/market/banner/index', 0); 276 +VALUES (2026, 'Banner管理', '', 2, 1, 2000, 'brand', '', 'mall/market/banner/index', 0);
277 -- 按钮父菜单ID 277 -- 按钮父菜单ID
278 SELECT @parentId := LAST_INSERT_ID(); 278 SELECT @parentId := LAST_INSERT_ID();
279 -- 按钮 SQL 279 -- 按钮 SQL
yudao-dependencies/pom.xml
@@ -66,6 +66,7 @@ @@ -66,6 +66,7 @@
66 <yunpian-java-sdk.version>1.2.7</yunpian-java-sdk.version> 66 <yunpian-java-sdk.version>1.2.7</yunpian-java-sdk.version>
67 <justauth.version>1.4.0</justauth.version> 67 <justauth.version>1.4.0</justauth.version>
68 <jimureport.version>1.5.2</jimureport.version> 68 <jimureport.version>1.5.2</jimureport.version>
  69 + <xercesImpl.version>2.12.0</xercesImpl.version>
69 </properties> 70 </properties>
70 71
71 <dependencyManagement> 72 <dependencyManagement>
@@ -577,6 +578,11 @@ @@ -577,6 +578,11 @@
577 <artifactId>jimureport-spring-boot-starter</artifactId> 578 <artifactId>jimureport-spring-boot-starter</artifactId>
578 <version>${jimureport.version}</version> 579 <version>${jimureport.version}</version>
579 </dependency> 580 </dependency>
  581 + <dependency>
  582 + <groupId>xerces</groupId>
  583 + <artifactId>xercesImpl</artifactId>
  584 + <version>${xercesImpl.version}</version>
  585 + </dependency>
580 </dependencies> 586 </dependencies>
581 </dependencyManagement> 587 </dependencyManagement>
582 588
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/CodegenServiceImpl.java
@@ -154,12 +154,12 @@ public class CodegenServiceImpl implements CodegenService { @@ -154,12 +154,12 @@ public class CodegenServiceImpl implements CodegenService {
154 // 构建 CodegenColumnDO 数组,只同步新增的字段 154 // 构建 CodegenColumnDO 数组,只同步新增的字段
155 List<CodegenColumnDO> codegenColumns = codegenColumnMapper.selectListByTableId(tableId); 155 List<CodegenColumnDO> codegenColumns = codegenColumnMapper.selectListByTableId(tableId);
156 Set<String> codegenColumnNames = CollectionUtils.convertSet(codegenColumns, CodegenColumnDO::getColumnName); 156 Set<String> codegenColumnNames = CollectionUtils.convertSet(codegenColumns, CodegenColumnDO::getColumnName);
157 - // 移除已经存在的字段  
158 - tableFields.removeIf(column -> codegenColumnNames.contains(column.getColumnName()));  
159 // 计算需要删除的字段 157 // 计算需要删除的字段
160 Set<String> tableFieldNames = CollectionUtils.convertSet(tableFields, TableField::getName); 158 Set<String> tableFieldNames = CollectionUtils.convertSet(tableFields, TableField::getName);
161 Set<Long> deleteColumnIds = codegenColumns.stream().filter(column -> !tableFieldNames.contains(column.getColumnName())) 159 Set<Long> deleteColumnIds = codegenColumns.stream().filter(column -> !tableFieldNames.contains(column.getColumnName()))
162 .map(CodegenColumnDO::getId).collect(Collectors.toSet()); 160 .map(CodegenColumnDO::getId).collect(Collectors.toSet());
  161 + // 移除已经存在的字段
  162 + tableFields.removeIf(column -> codegenColumnNames.contains(column.getColumnName()));
163 if (CollUtil.isEmpty(tableFields) && CollUtil.isEmpty(deleteColumnIds)) { 163 if (CollUtil.isEmpty(tableFields) && CollUtil.isEmpty(deleteColumnIds)) {
164 throw exception(CODEGEN_SYNC_NONE_CHANGE); 164 throw exception(CODEGEN_SYNC_NONE_CHANGE);
165 } 165 }
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue/views/index.vue.vm
@@ -96,7 +96,7 @@ @@ -96,7 +96,7 @@
96 @pagination="getList"/> 96 @pagination="getList"/>
97 97
98 <!-- 对话框(添加 / 修改) --> 98 <!-- 对话框(添加 / 修改) -->
99 - <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> 99 + <el-dialog :title="title" :visible.sync="open" width="500px" v-dialogDrag append-to-body>
100 <el-form ref="form" :model="form" :rules="rules" label-width="80px"> 100 <el-form ref="form" :model="form" :rules="rules" label-width="80px">
101 #foreach($column in $columns) 101 #foreach($column in $columns)
102 #if ($column.createOperation || $column.updateOperation) 102 #if ($column.createOperation || $column.updateOperation)
yudao-module-visualization/yudao-module-visualization-biz/pom.xml
@@ -68,6 +68,11 @@ @@ -68,6 +68,11 @@
68 <groupId>org.jeecgframework.jimureport</groupId> 68 <groupId>org.jeecgframework.jimureport</groupId>
69 <artifactId>jimureport-spring-boot-starter</artifactId> 69 <artifactId>jimureport-spring-boot-starter</artifactId>
70 </dependency> 70 </dependency>
  71 + <!-- 单独依赖升级版本,解决低版本validator失败问题 -->
  72 + <dependency>
  73 + <groupId>xerces</groupId>
  74 + <artifactId>xercesImpl</artifactId>
  75 + </dependency>
71 76
72 </dependencies> 77 </dependencies>
73 </project> 78 </project>
yudao-server/src/test/java/cn/iocoder/yudao/ProjectReactor.java
@@ -50,7 +50,12 @@ public class ProjectReactor { @@ -50,7 +50,12 @@ public class ProjectReactor {
50 String projectBaseDirNew = projectBaseDir + "-new"; // 一键改名后,“新”项目所在的目录 50 String projectBaseDirNew = projectBaseDir + "-new"; // 一键改名后,“新”项目所在的目录
51 log.info("[main][检测新项目目录 ({})是否存在]", projectBaseDirNew); 51 log.info("[main][检测新项目目录 ({})是否存在]", projectBaseDirNew);
52 if (FileUtil.exist(projectBaseDirNew)) { 52 if (FileUtil.exist(projectBaseDirNew)) {
53 - log.info("[main][新项目目录检测 ({})已存在,请更改新的目录,程序退出]", projectBaseDirNew); 53 + log.error("[main][新项目目录检测 ({})已存在,请更改新的目录!程序退出]", projectBaseDirNew);
  54 + return;
  55 + }
  56 + // 如果新目录中存在 PACKAGE_NAME,ARTIFACT_ID 等关键字,路径会被替换,导致生成的文件不在预期目录
  57 + if (StrUtil.containsAny(projectBaseDirNew, PACKAGE_NAME, ARTIFACT_ID, StrUtil.upperFirst(ARTIFACT_ID))) {
  58 + log.error("[main][新项目目录检测 ({}) 存在冲突名称「{}」或者「{}」,请更改新的目录!程序退出]", projectBaseDirNew, PACKAGE_NAME, ARTIFACT_ID);
54 return; 59 return;
55 } 60 }
56 log.info("[main][完成新项目目录检测,新项目路径地址 ({})]", projectBaseDirNew); 61 log.info("[main][完成新项目目录检测,新项目路径地址 ({})]", projectBaseDirNew);
yudao-ui-admin/src/assets/styles/ruoyi.scss
@@ -71,6 +71,16 @@ @@ -71,6 +71,16 @@
71 padding: 10px 20px 0; 71 padding: 10px 20px 0;
72 } 72 }
73 73
  74 +.el-dialog{
  75 + display: flex;
  76 + flex-direction: column;
  77 + max-width: calc(100% - 30px);
  78 + max-height: calc(100% - 70px);
  79 + .el-dialog__body {
  80 + overflow: auto;
  81 + }
  82 +}
  83 +
74 .el-table { 84 .el-table {
75 .el-table__header-wrapper, .el-table__fixed-header-wrapper { 85 .el-table__header-wrapper, .el-table__fixed-header-wrapper {
76 th { 86 th {
yudao-ui-admin/src/main.js
@@ -70,6 +70,10 @@ console.log(request) @@ -70,6 +70,10 @@ console.log(request)
70 Vue.prototype.$axios = request 70 Vue.prototype.$axios = request
71 import '@/styles/index.scss' 71 import '@/styles/index.scss'
72 72
  73 +// 默认点击背景不关闭弹窗
  74 +import ElementUI from 'element-ui'
  75 +ElementUI.Dialog.props.closeOnClickModal.default = false
  76 +
73 /** 77 /**
74 * If you don't want to use mock-server 78 * If you don't want to use mock-server
75 * you want to use MockJs for mock api 79 * you want to use MockJs for mock api
yudao-ui-admin/src/utils/formGenerator.js
1 /** 1 /**
2 * 将服务端返回的 fields 字符串数组,解析成 JSON 数组 2 * 将服务端返回的 fields 字符串数组,解析成 JSON 数组
  3 + * 如果指定了 variables 参数可对表单进行初始化
3 * 4 *
4 * @param fields JSON 字符串数组 5 * @param fields JSON 字符串数组
  6 + * @param variables Object 表单初始值
5 * @returns {*[]} JSON 数组 7 * @returns {*[]} JSON 数组
6 */ 8 */
7 -export function decodeFields(fields) {  
8 - const drawingList = []  
9 - fields.forEach(item => {  
10 - drawingList.push(JSON.parse(item)) 9 +export function decodeFields(fields, variables) {
  10 + const drawingList = (fields || []).map(json => {
  11 + const item = JSON.parse(json)
  12 +
  13 + if (typeof variables === 'undefined' ) return item
  14 +
  15 + const setDefault = (item, variables) => {
  16 + if (typeof variables[item.__vModel__] !== 'undefined') {
  17 + item.__config__.defaultValue = variables[item.__vModel__]
  18 + }
  19 + if (item.__config__.children && item.__config__.children.length) {
  20 + item.__config__.children.forEach(child => {
  21 + setDefault(child, variables)
  22 + })
  23 + }
  24 + }
  25 +
  26 + setDefault(item, variables)
  27 +
  28 + return item
11 }) 29 })
  30 +
12 return drawingList 31 return drawingList
13 } 32 }
yudao-ui-admin/src/views/infra/build/index.vue
@@ -133,7 +133,7 @@ import { @@ -133,7 +133,7 @@ import {
133 inputComponents, selectComponents, layoutComponents, formConf 133 inputComponents, selectComponents, layoutComponents, formConf
134 } from '@/components/generator/config' 134 } from '@/components/generator/config'
135 import { 135 import {
136 - exportDefault, beautifierConf, isNumberStr, titleCase, deepClone, isObjectObject 136 + exportDefault, beautifierConf, isNumberStr, titleCase, deepClone
137 } from '@/utils/index' 137 } from '@/utils/index'
138 import { 138 import {
139 makeUpHtml, vueTemplate, vueScript, cssStyle 139 makeUpHtml, vueTemplate, vueScript, cssStyle
@@ -272,7 +272,7 @@ export default { @@ -272,7 +272,7 @@ export default {
272 arr.reduce((pre, item, i) => { 272 arr.reduce((pre, item, i) => {
273 if (arr.length === i + 1) { 273 if (arr.length === i + 1) {
274 pre[item] = data 274 pre[item] = data
275 - } else if (!isObjectObject(pre[item])) { 275 + } else if (pre[item]===undefined) {
276 pre[item] = {} 276 pre[item] = {}
277 } 277 }
278 return pre[item] 278 return pre[item]
@@ -300,7 +300,7 @@ export default { @@ -300,7 +300,7 @@ export default {
300 url 300 url
301 }).then(resp => { 301 }).then(resp => {
302 this.setLoading(component, false) 302 this.setLoading(component, false)
303 - this.setRespData(component, resp.data) 303 + this.setRespData(component, resp)
304 }) 304 })
305 } 305 }
306 }, 306 },