Merge branch 'master' of https://gitee.com/y_project/RuoYi-Vue into dev
Conflicts:
.gitignore
ruoyi-common/src/main/java/com/ruoyi/common/constant/GenConstants.java
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/LoginBody.java
ruoyi-common/src/main/java/com/ruoyi/common/utils/DictUtils.java
ruoyi-common/src/main/java/com/ruoyi/common/utils/ExceptionUtil.java
ruoyi-common/src/main/java/com/ruoyi/common/utils/ServletUtils.java
ruoyi-common/src/main/java/com/ruoyi/common/utils/file/FileUploadUtils.java
ruoyi-common/src/main/java/com/ruoyi/common/utils/file/ImageUtils.java
ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpHelper.java
ruoyi-common/src/main/java/com/ruoyi/common/utils/http/HttpUtils.java
ruoyi-common/src/main/java/com/ruoyi/common/utils/ip/AddressUtils.java
ruoyi-common/src/main/java/com/ruoyi/common/utils/poi/ExcelUtil.java
ruoyi-common/src/main/java/com/ruoyi/common/utils/sign/Md5Utils.java
ruoyi-common/src/main/java/com/ruoyi/common/utils/sql/SqlUtil.java
ruoyi-common/src/main/java/com/ruoyi/common/xss/XssValidator.java
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java
ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java
ruoyi-generator/src/main/java/com/ruoyi/generator/util/GenUtils.java
ruoyi-generator/src/main/java/com/ruoyi/generator/util/VelocityUtils.java
ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
ruoyi-ui/src/components/FileUpload/index.vue
ruoyi-ui/src/views/tool/build/index.vue
| | |
| | | *.iml |
| | | *.ipr |
| | | |
| | | ### JRebel ### |
| | | rebel.xml |
| | | |
| | | ### NetBeans ### |
| | | nbproject/private/ |
| | | build/* |
| | |
| | | String QUERY_LIKE = "LIKE"; |
| | | |
| | | /** |
| | | * 相等查询 |
| | | */ |
| | | String QUERY_EQ = "EQ"; |
| | | |
| | | /** |
| | | * 需要 |
| | | */ |
| | | String REQUIRE = "1"; |
| | |
| | | * 唯一标识 |
| | | */ |
| | | @ApiModelProperty(value = "唯一标识") |
| | | private String uuid = ""; |
| | | private String uuid; |
| | | |
| | | } |
| | |
| | | * |
| | | * @param response 渲染对象 |
| | | * @param string 待渲染的字符串 |
| | | * @return null |
| | | */ |
| | | public static String renderString(HttpServletResponse response, String string) { |
| | | public static void renderString(HttpServletResponse response, String string) { |
| | | try { |
| | | response.setStatus(HttpStatus.HTTP_OK); |
| | | response.setContentType(MediaType.APPLICATION_JSON_VALUE); |
| | |
| | | } catch (IOException e) { |
| | | e.printStackTrace(); |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | |
| | | public static boolean isAjaxRequest(HttpServletRequest request) { |
| | | |
| | | String accept = request.getHeader("accept"); |
| | | if (accept != null && accept.indexOf("application/json") != -1) { |
| | | if (accept != null && accept.contains("application/json")) { |
| | | return true; |
| | | } |
| | | |
| | | String xRequestedWith = request.getHeader("X-Requested-With"); |
| | | if (xRequestedWith != null && xRequestedWith.indexOf("XMLHttpRequest") != -1) { |
| | | if (xRequestedWith != null && xRequestedWith.contains("XMLHttpRequest")) { |
| | | return true; |
| | | } |
| | | |
| | |
| | | } |
| | | |
| | | String ajax = request.getParameter("__ajax"); |
| | | if (StringUtils.equalsAnyIgnoreCase(ajax, "json", "xml")) { |
| | | return true; |
| | | } |
| | | return false; |
| | | return StringUtils.equalsAnyIgnoreCase(ajax, "json", "xml"); |
| | | } |
| | | |
| | | public static String getClientIP() { |
| | |
| | | log.error("获取地理位置异常 {}", ip); |
| | | } |
| | | } |
| | | return address; |
| | | return UNKNOWN; |
| | | } |
| | | } |
| | |
| | | GenTableColumn prevColumn = tableColumnMap.get(column.getColumnName()); |
| | | column.setColumnId(prevColumn.getColumnId()); |
| | | if (column.isList()) { |
| | | // 如果是列表,继续保留字典类型 |
| | | // 如果是列表,继续保留查询方式/字典类型选项 |
| | | column.setDictType(prevColumn.getDictType()); |
| | | column.setQueryType(prevColumn.getQueryType()); |
| | | } |
| | | if (StringUtils.isNotEmpty(prevColumn.getIsRequired()) && !column.isPk() |
| | | && (column.isInsert() || column.isEdit()) |
| | | && ((column.isUsableColumn()) || (!column.isSuperColumn()))) |
| | | { |
| | | // 如果是(新增/修改&非主键/非忽略及父属性),继续保留必填/显示类型选项 |
| | | column.setIsRequired(prevColumn.getIsRequired()); |
| | | column.setHtmlType(prevColumn.getHtmlType()); |
| | | } |
| | | genTableColumnMapper.updateById(column); |
| | | } else { |
| | |
| | | column.setJavaField(StringUtils.toCamelCase(columnName)); |
| | | // 设置默认类型 |
| | | column.setJavaType(GenConstants.TYPE_STRING); |
| | | column.setQueryType(GenConstants.QUERY_EQ); |
| | | |
| | | if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) { |
| | | // 字符串长度超过500设置为文本域 |
| | |
| | | public static String getModuleName(String packageName) { |
| | | int lastIndex = packageName.lastIndexOf("."); |
| | | int nameLength = packageName.length(); |
| | | String moduleName = StringUtils.substring(packageName, lastIndex + 1, nameLength); |
| | | return moduleName; |
| | | return StringUtils.substring(packageName, lastIndex + 1, nameLength); |
| | | } |
| | | |
| | | /** |
| | |
| | | */ |
| | | public static String getPackagePrefix(String packageName) { |
| | | int lastIndex = packageName.lastIndexOf("."); |
| | | String basePackage = StringUtils.substring(packageName, 0, lastIndex); |
| | | return basePackage; |
| | | return StringUtils.substring(packageName, 0, lastIndex); |
| | | } |
| | | |
| | | /** |
| | |
| | | List<SysUser> selectUserList(SysUser sysUser); |
| | | |
| | | /** |
| | | * 根据条件分页查询未已配用户角色列表 |
| | | * 根据条件分页查询已配用户角色列表 |
| | | * |
| | | * @param user 用户信息 |
| | | * @return 用户信息集合信息 |
| | |
| | | * 批量删除参数信息 |
| | | * |
| | | * @param configIds 需要删除的参数ID |
| | | * @return 结果 |
| | | */ |
| | | void deleteConfigByIds(Long[] configIds); |
| | | |
| | |
| | | * 批量删除字典数据信息 |
| | | * |
| | | * @param dictCodes 需要删除的字典数据ID |
| | | * @return 结果 |
| | | */ |
| | | void deleteDictDataByIds(Long[] dictCodes); |
| | | |
| | |
| | | * 批量删除字典信息 |
| | | * |
| | | * @param dictIds 需要删除的字典ID |
| | | * @return 结果 |
| | | */ |
| | | void deleteDictTypeByIds(Long[] dictIds); |
| | | |
| | |
| | | * 批量删除系统登录日志 |
| | | * |
| | | * @param infoIds 需要删除的登录日志ID |
| | | * @return |
| | | * @return 结果 |
| | | */ |
| | | int deleteLogininforByIds(Long[] infoIds); |
| | | |
| | |
| | | * |
| | | * @param postIds 需要删除的岗位ID |
| | | * @return 结果 |
| | | * @throws Exception 异常 |
| | | */ |
| | | int deletePostByIds(Long[] postIds); |
| | | |
| | |
| | | * 批量删除参数信息 |
| | | * |
| | | * @param configIds 需要删除的参数ID |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | public void deleteConfigByIds(Long[] configIds) { |
| | |
| | | * 批量删除字典数据信息 |
| | | * |
| | | * @param dictCodes 需要删除的字典数据ID |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | public void deleteDictDataByIds(Long[] dictCodes) { |
| | |
| | | * 批量删除字典类型信息 |
| | | * |
| | | * @param dictIds 需要删除的字典ID |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | public void deleteDictTypeByIds(Long[] dictIds) { |
| | |
| | | * 批量删除系统登录日志 |
| | | * |
| | | * @param infoIds 需要删除的登录日志ID |
| | | * @return |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | | public int deleteLogininforByIds(Long[] infoIds) { |
| | |
| | | * |
| | | * @param postIds 需要删除的岗位ID |
| | | * @return 结果 |
| | | * @throws Exception 异常 |
| | | */ |
| | | @Override |
| | | public int deletePostByIds(Long[] postIds) { |
| | |
| | | * 批量选择授权用户角色 |
| | | * |
| | | * @param roleId 角色ID |
| | | * @param userIds 需要删除的用户数据ID |
| | | * @param userIds 需要授权的用户数据ID |
| | | * @return 结果 |
| | | */ |
| | | @Override |
| | |
| | | |
| | | <!-- 文件列表 --> |
| | | <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul"> |
| | | <li :key="file.uid" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList"> |
| | | <li :key="file.url" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList"> |
| | | <el-link :href="`${file.url}`" :underline="false" target="_blank"> |
| | | <span class="el-icon-document"> {{ getFileName(file.name) }} </span> |
| | | </el-link> |
| | |
| | | permissions: ['tool:gen:edit'], |
| | | children: [ |
| | | { |
| | | path: 'index', |
| | | path: 'index/:tableId(\\d+)', |
| | | component: () => import('@/views/tool/gen/editTable'), |
| | | name: 'GenEdit', |
| | | meta: { title: '修改生成配置', activeMenu: '/tool/gen' } |
| | |
| | | let someSpanIsNot24
|
| | |
|
| | | export function dialogWrapper(str) {
|
| | | return `<el-dialog v-bind="$attrs" v-on="$listeners" @open="onOpen" @close="onClose" title="Dialog Titile">
|
| | | return `<el-dialog v-bind="$attrs" v-on="$listeners" @open="onOpen" @close="onClose" title="Dialog Title"> |
| | | ${str}
|
| | | <div slot="footer">
|
| | | <el-button @click="close">取消</el-button>
|
| | | <el-button type="primary" @click="handelConfirm">确定</el-button>
|
| | | <el-button type="primary" @click="handleConfirm">确定</el-button> |
| | | </div>
|
| | | </el-dialog>`
|
| | | }
|
| | |
| | | close: `close() {
|
| | | this.$emit('update:visible', false)
|
| | | },`,
|
| | | handelConfirm: `handelConfirm() {
|
| | | handleConfirm: `handleConfirm() { |
| | | this.$refs['${confGlobal.formRef}'].validate(valid => {
|
| | | if(!valid) return
|
| | | this.close()
|
| | |
| | | <el-button @click="close">
|
| | | 取消
|
| | | </el-button>
|
| | | <el-button type="primary" @click="handelConfirm">
|
| | | <el-button type="primary" @click="handleConfirm"> |
| | | 确定
|
| | | </el-button>
|
| | | </div>
|
| | |
| | | close(e) {
|
| | | this.$emit('update:visible', false)
|
| | | },
|
| | | handelConfirm() {
|
| | | handleConfirm() { |
| | | this.$refs.elForm.validate(valid => {
|
| | | if (!valid) return
|
| | | this.$emit('confirm', { ...this.formData })
|
| | |
| | | <div slot="footer">
|
| | | <el-button
|
| | | type="primary"
|
| | | @click="handelConfirm"
|
| | | @click="handleConfirm" |
| | | >
|
| | | 确定
|
| | | </el-button>
|
| | |
| | | close() {
|
| | | this.$emit('update:visible', false)
|
| | | },
|
| | | handelConfirm() {
|
| | | handleConfirm() { |
| | | this.$refs.elForm.validate(valid => {
|
| | | if (!valid) return
|
| | | if (this.dataType === 'number') {
|
| | |
| | | import { makeUpHtml, vueTemplate, vueScript, cssStyle } from '@/utils/generator/html' |
| | | import { makeUpJs } from '@/utils/generator/js' |
| | | import { makeUpCss } from '@/utils/generator/css' |
| | | import drawingDefalut from '@/utils/generator/drawingDefalut' |
| | | import drawingDefault from '@/utils/generator/drawingDefault' |
| | | import logo from '@/assets/logo/logo.png' |
| | | import CodeTypeDialog from './CodeTypeDialog' |
| | | import DraggableItem from './DraggableItem' |
| | |
| | | selectComponents, |
| | | layoutComponents, |
| | | labelWidth: 100, |
| | | drawingList: drawingDefalut, |
| | | drawingList: drawingDefault, |
| | | drawingData: {}, |
| | | activeId: drawingDefalut[0].formId, |
| | | activeId: drawingDefault[0].formId, |
| | | drawerVisible: false, |
| | | formData: {}, |
| | | dialogVisible: false, |
| | | generateConf: null, |
| | | showFileName: false, |
| | | activeData: drawingDefalut[0] |
| | | activeData: drawingDefault[0] |
| | | } |
| | | }, |
| | | created() { |
| | |
| | | }; |
| | | }, |
| | | created() { |
| | | const tableId = this.$route.query && this.$route.query.tableId; |
| | | const tableId = this.$route.params && this.$route.params.tableId; |
| | | if (tableId) { |
| | | // 获取表详细信息 |
| | | getGenTable(tableId).then(res => { |
| | |
| | | /** 修改按钮操作 */ |
| | | handleEditTable(row) { |
| | | const tableId = row.tableId || this.ids[0]; |
| | | this.$router.push({ path: '/tool/gen-edit/index', query: { tableId: tableId, pageNum: this.queryParams.pageNum } }); |
| | | this.$router.push({ path: '/tool/gen-edit/index/' + tableId, query: { pageNum: this.queryParams.pageNum } }); |
| | | }, |
| | | /** 删除按钮操作 */ |
| | | handleDelete(row) { |