This commit is contained in:
shizhong 2022-09-01 09:49:09 +08:00
commit 44e2a710fc
14 changed files with 67 additions and 23 deletions

View File

@ -27,7 +27,7 @@
<url>https://github.com/YunaiV/ruoyi-vue-pro</url> <url>https://github.com/YunaiV/ruoyi-vue-pro</url>
<properties> <properties>
<revision>1.6.3-snapshot</revision> <revision>1.6.4-snapshot</revision>
<!-- Maven 相关 --> <!-- Maven 相关 -->
<java.version>1.8</java.version> <java.version>1.8</java.version>
<maven.compiler.source>${java.version}</maven.compiler.source> <maven.compiler.source>${java.version}</maven.compiler.source>

View File

@ -2657,8 +2657,3 @@ INSERT INTO `system_users` (`id`, `username`, `password`, `nickname`, `remark`,
COMMIT; COMMIT;
SET FOREIGN_KEY_CHECKS = 1; SET FOREIGN_KEY_CHECKS = 1;
-- 积木报表菜单
INSERT INTO `system_menu` VALUES (1281, '可视化报表', '', 1, 12, 0, '/visualization', 'chart', NULL, 0, b'1', b'1', '1', '2022-07-10 20:22:15', '1', '2022-07-10 20:33:30', b'0');
INSERT INTO `system_menu` VALUES (1282, '积木报表', '', 2, 1, 1281, 'jm-report', '#', 'visualization/jm/index', 0, b'1', b'1', '1', '2022-07-10 20:26:36', '1', '2022-07-10 20:33:26', b'0');

View File

@ -253,7 +253,7 @@ create table product_sku
collate utf8mb4_general_ci; collate utf8mb4_general_ci;
---Market-Banner管理SQL -- Market-Banner管理SQL
drop table if exists market_banner; drop table if exists market_banner;
CREATE TABLE `market_banner` ( CREATE TABLE `market_banner` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'Banner编号', `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'Banner编号',
@ -273,7 +273,7 @@ CREATE TABLE `market_banner` (
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='Banner管理'; ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='Banner管理';
-- 菜单 SQL -- 菜单 SQL
INSERT INTO `system_menu`(`id`,`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`) INSERT INTO `system_menu`(`id`,`name`, `permission`, `type`, `sort`, `parent_id`, `path`, `icon`, `component`, `status`)
VALUES (2002, 'Banner管理', '', 2, 1, 2000, 'brand', '', 'mall/market/banner/index', 0); VALUES (2026, 'Banner管理', '', 2, 1, 2000, 'brand', '', 'mall/market/banner/index', 0);
-- 按钮父菜单ID -- 按钮父菜单ID
SELECT @parentId := LAST_INSERT_ID(); SELECT @parentId := LAST_INSERT_ID();
-- 按钮 SQL -- 按钮 SQL

View File

@ -14,7 +14,7 @@
<url>https://github.com/YunaiV/ruoyi-vue-pro</url> <url>https://github.com/YunaiV/ruoyi-vue-pro</url>
<properties> <properties>
<revision>1.6.3-snapshot</revision> <revision>1.6.4-snapshot</revision>
<!-- 统一依赖管理 --> <!-- 统一依赖管理 -->
<spring.boot.version>2.6.10</spring.boot.version> <spring.boot.version>2.6.10</spring.boot.version>
<!-- Web 相关 --> <!-- Web 相关 -->
@ -65,6 +65,7 @@
<yunpian-java-sdk.version>1.2.7</yunpian-java-sdk.version> <yunpian-java-sdk.version>1.2.7</yunpian-java-sdk.version>
<justauth.version>1.4.0</justauth.version> <justauth.version>1.4.0</justauth.version>
<jimureport.version>1.5.2</jimureport.version> <jimureport.version>1.5.2</jimureport.version>
<xercesImpl.version>2.12.0</xercesImpl.version>
</properties> </properties>
<dependencyManagement> <dependencyManagement>
@ -565,6 +566,11 @@
<artifactId>jimureport-spring-boot-starter</artifactId> <artifactId>jimureport-spring-boot-starter</artifactId>
<version>${jimureport.version}</version> <version>${jimureport.version}</version>
</dependency> </dependency>
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
<version>${xercesImpl.version}</version>
</dependency>
</dependencies> </dependencies>
</dependencyManagement> </dependencyManagement>

View File

@ -154,12 +154,12 @@ public class CodegenServiceImpl implements CodegenService {
// 构建 CodegenColumnDO 数组只同步新增的字段 // 构建 CodegenColumnDO 数组只同步新增的字段
List<CodegenColumnDO> codegenColumns = codegenColumnMapper.selectListByTableId(tableId); List<CodegenColumnDO> codegenColumns = codegenColumnMapper.selectListByTableId(tableId);
Set<String> codegenColumnNames = CollectionUtils.convertSet(codegenColumns, CodegenColumnDO::getColumnName); Set<String> codegenColumnNames = CollectionUtils.convertSet(codegenColumns, CodegenColumnDO::getColumnName);
// 移除已经存在的字段
tableFields.removeIf(column -> codegenColumnNames.contains(column.getColumnName()));
// 计算需要删除的字段 // 计算需要删除的字段
Set<String> tableFieldNames = CollectionUtils.convertSet(tableFields, TableField::getName); Set<String> tableFieldNames = CollectionUtils.convertSet(tableFields, TableField::getName);
Set<Long> deleteColumnIds = codegenColumns.stream().filter(column -> !tableFieldNames.contains(column.getColumnName())) Set<Long> deleteColumnIds = codegenColumns.stream().filter(column -> !tableFieldNames.contains(column.getColumnName()))
.map(CodegenColumnDO::getId).collect(Collectors.toSet()); .map(CodegenColumnDO::getId).collect(Collectors.toSet());
// 移除已经存在的字段
tableFields.removeIf(column -> codegenColumnNames.contains(column.getColumnName()));
if (CollUtil.isEmpty(tableFields) && CollUtil.isEmpty(deleteColumnIds)) { if (CollUtil.isEmpty(tableFields) && CollUtil.isEmpty(deleteColumnIds)) {
throw exception(CODEGEN_SYNC_NONE_CHANGE); throw exception(CODEGEN_SYNC_NONE_CHANGE);
} }

View File

@ -96,7 +96,7 @@
@pagination="getList"/> @pagination="getList"/>
<!-- 对话框(添加 / 修改) --> <!-- 对话框(添加 / 修改) -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="500px" v-dialogDrag append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px"> <el-form ref="form" :model="form" :rules="rules" label-width="80px">
#foreach($column in $columns) #foreach($column in $columns)
#if ($column.createOperation || $column.updateOperation) #if ($column.createOperation || $column.updateOperation)

View File

@ -68,6 +68,11 @@
<groupId>org.jeecgframework.jimureport</groupId> <groupId>org.jeecgframework.jimureport</groupId>
<artifactId>jimureport-spring-boot-starter</artifactId> <artifactId>jimureport-spring-boot-starter</artifactId>
</dependency> </dependency>
<!-- 单独依赖升级版本解决低版本validator失败问题 -->
<dependency>
<groupId>xerces</groupId>
<artifactId>xercesImpl</artifactId>
</dependency>
</dependencies> </dependencies>
</project> </project>

View File

@ -50,7 +50,12 @@ public class ProjectReactor {
String projectBaseDirNew = projectBaseDir + "-new"; // 一键改名后项目所在的目录 String projectBaseDirNew = projectBaseDir + "-new"; // 一键改名后项目所在的目录
log.info("[main][检测新项目目录 ({})是否存在]", projectBaseDirNew); log.info("[main][检测新项目目录 ({})是否存在]", projectBaseDirNew);
if (FileUtil.exist(projectBaseDirNew)) { if (FileUtil.exist(projectBaseDirNew)) {
log.info("[main][新项目目录检测 ({})已存在,请更改新的目录,程序退出]", projectBaseDirNew); log.error("[main][新项目目录检测 ({})已存在,请更改新的目录!程序退出]", projectBaseDirNew);
return;
}
// 如果新目录中存在 PACKAGE_NAMEARTIFACT_ID 等关键字路径会被替换导致生成的文件不在预期目录
if (StrUtil.containsAny(projectBaseDirNew, PACKAGE_NAME, ARTIFACT_ID, StrUtil.upperFirst(ARTIFACT_ID))) {
log.error("[main][新项目目录检测 ({}) 存在冲突名称「{}」或者「{}」,请更改新的目录!程序退出]", projectBaseDirNew, PACKAGE_NAME, ARTIFACT_ID);
return; return;
} }
log.info("[main][完成新项目目录检测,新项目路径地址 ({})]", projectBaseDirNew); log.info("[main][完成新项目目录检测,新项目路径地址 ({})]", projectBaseDirNew);

View File

@ -67,8 +67,8 @@
getCode() { getCode() {
getCodeImg().then(res => { getCodeImg().then(res => {
res = res.data; res = res.data;
this.captchaEnable = res.enable; this.captchaEnabled = res.enable;
if (this.captchaEnable) { if (this.captchaEnabled) {
this.codeUrl = "data:image/gif;base64," + res.img; this.codeUrl = "data:image/gif;base64," + res.img;
this.loginForm.uuid = res.uuid; this.loginForm.uuid = res.uuid;
} }

View File

@ -1,6 +1,6 @@
{ {
"name": "yudao-ui-admin", "name": "yudao-ui-admin",
"version": "1.6.3-snapshot", "version": "1.6.4-snapshot",
"description": "芋道管理系统", "description": "芋道管理系统",
"author": "芋道", "author": "芋道",
"license": "MIT", "license": "MIT",

View File

@ -71,6 +71,16 @@
padding: 10px 20px 0; padding: 10px 20px 0;
} }
.el-dialog{
display: flex;
flex-direction: column;
max-width: calc(100% - 30px);
max-height: calc(100% - 70px);
.el-dialog__body {
overflow: auto;
}
}
.el-table { .el-table {
.el-table__header-wrapper, .el-table__fixed-header-wrapper { .el-table__header-wrapper, .el-table__fixed-header-wrapper {
th { th {

View File

@ -70,6 +70,10 @@ console.log(request)
Vue.prototype.$axios = request Vue.prototype.$axios = request
import '@/styles/index.scss' import '@/styles/index.scss'
// 默认点击背景不关闭弹窗
import ElementUI from 'element-ui'
ElementUI.Dialog.props.closeOnClickModal.default = false
/** /**
* If you don't want to use mock-server * If you don't want to use mock-server
* you want to use MockJs for mock api * you want to use MockJs for mock api

View File

@ -1,13 +1,32 @@
/** /**
* 将服务端返回的 fields 字符串数组解析成 JSON 数组 * 将服务端返回的 fields 字符串数组解析成 JSON 数组
* 如果指定了 variables 参数可对表单进行初始化
* *
* @param fields JSON 字符串数组 * @param fields JSON 字符串数组
* @param variables Object 表单初始值
* @returns {*[]} JSON 数组 * @returns {*[]} JSON 数组
*/ */
export function decodeFields(fields) { export function decodeFields(fields, variables) {
const drawingList = [] const drawingList = (fields || []).map(json => {
fields.forEach(item => { const item = JSON.parse(json)
drawingList.push(JSON.parse(item))
if (typeof variables === 'undefined' ) return item
const setDefault = (item, variables) => {
if (typeof variables[item.__vModel__] !== 'undefined') {
item.__config__.defaultValue = variables[item.__vModel__]
}
if (item.__config__.children && item.__config__.children.length) {
item.__config__.children.forEach(child => {
setDefault(child, variables)
})
}
}
setDefault(item, variables)
return item
}) })
return drawingList return drawingList
} }

View File

@ -133,7 +133,7 @@ import {
inputComponents, selectComponents, layoutComponents, formConf inputComponents, selectComponents, layoutComponents, formConf
} from '@/components/generator/config' } from '@/components/generator/config'
import { import {
exportDefault, beautifierConf, isNumberStr, titleCase, deepClone, isObjectObject exportDefault, beautifierConf, isNumberStr, titleCase, deepClone
} from '@/utils/index' } from '@/utils/index'
import { import {
makeUpHtml, vueTemplate, vueScript, cssStyle makeUpHtml, vueTemplate, vueScript, cssStyle
@ -272,7 +272,7 @@ export default {
arr.reduce((pre, item, i) => { arr.reduce((pre, item, i) => {
if (arr.length === i + 1) { if (arr.length === i + 1) {
pre[item] = data pre[item] = data
} else if (!isObjectObject(pre[item])) { } else if (pre[item]===undefined) {
pre[item] = {} pre[item] = {}
} }
return pre[item] return pre[item]
@ -300,7 +300,7 @@ export default {
url url
}).then(resp => { }).then(resp => {
this.setLoading(component, false) this.setLoading(component, false)
this.setRespData(component, resp.data) this.setRespData(component, resp)
}) })
} }
}, },