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 253 collate utf8mb4_general_ci;
254 254  
255 255  
256   ----Market-Banner管理SQL
  256 +-- Market-Banner管理SQL
257 257 drop table if exists market_banner;
258 258 CREATE TABLE `market_banner` (
259 259 `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'Banner编号',
... ... @@ -273,7 +273,7 @@ CREATE TABLE `market_banner` (
273 273 ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='Banner管理';
274 274 -- 菜单 SQL
275 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 277 -- 按钮父菜单ID
278 278 SELECT @parentId := LAST_INSERT_ID();
279 279 -- 按钮 SQL
... ...
yudao-dependencies/pom.xml
... ... @@ -66,6 +66,7 @@
66 66 <yunpian-java-sdk.version>1.2.7</yunpian-java-sdk.version>
67 67 <justauth.version>1.4.0</justauth.version>
68 68 <jimureport.version>1.5.2</jimureport.version>
  69 + <xercesImpl.version>2.12.0</xercesImpl.version>
69 70 </properties>
70 71  
71 72 <dependencyManagement>
... ... @@ -577,6 +578,11 @@
577 578 <artifactId>jimureport-spring-boot-starter</artifactId>
578 579 <version>${jimureport.version}</version>
579 580 </dependency>
  581 + <dependency>
  582 + <groupId>xerces</groupId>
  583 + <artifactId>xercesImpl</artifactId>
  584 + <version>${xercesImpl.version}</version>
  585 + </dependency>
580 586 </dependencies>
581 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 154 // 构建 CodegenColumnDO 数组,只同步新增的字段
155 155 List<CodegenColumnDO> codegenColumns = codegenColumnMapper.selectListByTableId(tableId);
156 156 Set<String> codegenColumnNames = CollectionUtils.convertSet(codegenColumns, CodegenColumnDO::getColumnName);
157   - // 移除已经存在的字段
158   - tableFields.removeIf(column -> codegenColumnNames.contains(column.getColumnName()));
159 157 // 计算需要删除的字段
160 158 Set<String> tableFieldNames = CollectionUtils.convertSet(tableFields, TableField::getName);
161 159 Set<Long> deleteColumnIds = codegenColumns.stream().filter(column -> !tableFieldNames.contains(column.getColumnName()))
162 160 .map(CodegenColumnDO::getId).collect(Collectors.toSet());
  161 + // 移除已经存在的字段
  162 + tableFields.removeIf(column -> codegenColumnNames.contains(column.getColumnName()));
163 163 if (CollUtil.isEmpty(tableFields) && CollUtil.isEmpty(deleteColumnIds)) {
164 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 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 100 <el-form ref="form" :model="form" :rules="rules" label-width="80px">
101 101 #foreach($column in $columns)
102 102 #if ($column.createOperation || $column.updateOperation)
... ...
yudao-module-visualization/yudao-module-visualization-biz/pom.xml
... ... @@ -68,6 +68,11 @@
68 68 <groupId>org.jeecgframework.jimureport</groupId>
69 69 <artifactId>jimureport-spring-boot-starter</artifactId>
70 70 </dependency>
  71 + <!-- 单独依赖升级版本,解决低版本validator失败问题 -->
  72 + <dependency>
  73 + <groupId>xerces</groupId>
  74 + <artifactId>xercesImpl</artifactId>
  75 + </dependency>
71 76  
72 77 </dependencies>
73 78 </project>
... ...
yudao-server/src/test/java/cn/iocoder/yudao/ProjectReactor.java
... ... @@ -50,7 +50,12 @@ public class ProjectReactor {
50 50 String projectBaseDirNew = projectBaseDir + "-new"; // 一键改名后,“新”项目所在的目录
51 51 log.info("[main][检测新项目目录 ({})是否存在]", projectBaseDirNew);
52 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 59 return;
55 60 }
56 61 log.info("[main][完成新项目目录检测,新项目路径地址 ({})]", projectBaseDirNew);
... ...
yudao-ui-admin/src/assets/styles/ruoyi.scss
... ... @@ -71,6 +71,16 @@
71 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 84 .el-table {
75 85 .el-table__header-wrapper, .el-table__fixed-header-wrapper {
76 86 th {
... ...
yudao-ui-admin/src/main.js
... ... @@ -70,6 +70,10 @@ console.log(request)
70 70 Vue.prototype.$axios = request
71 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 78 * If you don't want to use mock-server
75 79 * you want to use MockJs for mock api
... ...
yudao-ui-admin/src/utils/formGenerator.js
1 1 /**
2 2 * 将服务端返回的 fields 字符串数组,解析成 JSON 数组
  3 + * 如果指定了 variables 参数可对表单进行初始化
3 4 *
4 5 * @param fields JSON 字符串数组
  6 + * @param variables Object 表单初始值
5 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 31 return drawingList
13 32 }
... ...
yudao-ui-admin/src/views/infra/build/index.vue
... ... @@ -133,7 +133,7 @@ import {
133 133 inputComponents, selectComponents, layoutComponents, formConf
134 134 } from '@/components/generator/config'
135 135 import {
136   - exportDefault, beautifierConf, isNumberStr, titleCase, deepClone, isObjectObject
  136 + exportDefault, beautifierConf, isNumberStr, titleCase, deepClone
137 137 } from '@/utils/index'
138 138 import {
139 139 makeUpHtml, vueTemplate, vueScript, cssStyle
... ... @@ -272,7 +272,7 @@ export default {
272 272 arr.reduce((pre, item, i) => {
273 273 if (arr.length === i + 1) {
274 274 pre[item] = data
275   - } else if (!isObjectObject(pre[item])) {
  275 + } else if (pre[item]===undefined) {
276 276 pre[item] = {}
277 277 }
278 278 return pre[item]
... ... @@ -300,7 +300,7 @@ export default {
300 300 url
301 301 }).then(resp => {
302 302 this.setLoading(component, false)
303   - this.setRespData(component, resp.data)
  303 + this.setRespData(component, resp)
304 304 })
305 305 }
306 306 },
... ...