Commit 020535ab3aa95063f1446a4a1422145bc0c09d30
Committed by
Gitee
Merge branch 'master' of gitee.com:zhijiantianya/ruoyi-vue-pro into master
Signed-off-by: xingyu <xingyu4j@vip.qq.com>
Showing
10 changed files
with
62 additions
and
13 deletions
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 | }, |