Pre Merge pull request !273 from 疯狂的狮子Li/dev

This commit is contained in:
疯狂的狮子Li 2026-06-17 05:04:11 +00:00 committed by Gitee
commit 5b1bf71a3e
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
11 changed files with 103 additions and 74 deletions

View File

@ -1,7 +1,7 @@
{ {
"$schema": "https://json.schemastore.org/package", "$schema": "https://json.schemastore.org/package",
"name": "ruoyi-vue-plus", "name": "ruoyi-vue-plus",
"version": "5.6.1-2.6.1", "version": "5.6.2-2.6.2",
"description": "RuoYi-Vue-Plus多租户管理系统", "description": "RuoYi-Vue-Plus多租户管理系统",
"author": "LionLi", "author": "LionLi",
"license": "MIT", "license": "MIT",

View File

@ -61,14 +61,6 @@ export const delTable = (tableId: string | number | Array<string | number>) => {
}); });
}; };
// 生成代码(自定义路径)
export const genCode = (tableId: string | number) => {
return request({
url: '/tool/gen/genCode/' + tableId,
method: 'get'
});
};
// 同步数据库 // 同步数据库
export const synchDb = (tableId: string | number) => { export const synchDb = (tableId: string | number) => {
return request({ return request({

View File

@ -13,8 +13,6 @@ export interface TableVO extends BaseEntity {
businessName: string; businessName: string;
functionName: string; functionName: string;
functionAuthor: string; functionAuthor: string;
genType: string;
genPath: string;
pkColumn?: any; pkColumn?: any;
columns?: any; columns?: any;
options?: any; options?: any;
@ -81,8 +79,6 @@ export interface DbTableVO {
businessName?: any; businessName?: any;
functionName?: any; functionName?: any;
functionAuthor?: any; functionAuthor?: any;
genType?: any;
genPath?: any;
pkColumn?: any; pkColumn?: any;
columns: DbColumnVO[]; columns: DbColumnVO[];
options?: any; options?: any;
@ -162,8 +158,6 @@ export interface DbTableForm extends BaseEntity {
businessName: string; businessName: string;
functionName: string; functionName: string;
functionAuthor: string; functionAuthor: string;
genType: string;
genPath: string;
pkColumn?: any; pkColumn?: any;
columns: DbColumnForm[]; columns: DbColumnForm[];
options: string; options: string;

View File

@ -67,6 +67,29 @@ html.dark {
--el-color-primary-light-9: #262727; --el-color-primary-light-9: #262727;
} }
.el-table {
--el-table-current-row-bg-color: var(--el-color-primary-dark-7)
}
.el-dropdown__popper {
--el-dropdown-menuItem-hover-fill: var(--el-color-primary-dark-7)
}
.el-button {
--el-button-hover-bg-color: var(--el-color-primary-dark-9);
--el-button-hover-border-color: var(--el-color-primary-dark-7);
}
.el-button.is-plain {
--el-button-hover-bg-color: var(--el-fill-color-light);
--el-button-hover-border-color: var(--el-color-primary);
}
.el-button.is-dashed {
--el-button-hover-bg-color: var(--el-fill-color-light);
--el-button-hover-border-color: var(--el-color-primary);
}
.el-button--primary { .el-button--primary {
--el-button-bg-color: #2b6bd3; --el-button-bg-color: #2b6bd3;
--el-button-border-color: #3a7be8; --el-button-border-color: #3a7be8;
@ -81,6 +104,18 @@ html.dark {
--el-button-bg-color: rgba(43, 107, 211, 0.12); --el-button-bg-color: rgba(43, 107, 211, 0.12);
--el-button-border-color: rgba(58, 123, 232, 0.5); --el-button-border-color: rgba(58, 123, 232, 0.5);
--el-button-text-color: #dbe8ff; --el-button-text-color: #dbe8ff;
--el-button-hover-text-color: var(--el-color-white);
--el-button-hover-bg-color: var(--el-color-primary);
--el-button-hover-border-color: var(--el-color-primary);
--el-button-active-bg-color: rgba(43, 107, 211, 0.28);
--el-button-active-border-color: rgba(43, 107, 211, 0.8);
}
.el-button--primary.is-dashed {
--el-button-bg-color: rgba(43, 107, 211, 0.12);
--el-button-border-color: rgba(58, 123, 232, 0.5);
--el-button-text-color: #dbe8ff;
--el-button-hover-text-color: #dbe8ff;
--el-button-hover-bg-color: rgba(58, 123, 232, 0.2); --el-button-hover-bg-color: rgba(58, 123, 232, 0.2);
--el-button-hover-border-color: rgba(58, 123, 232, 0.7); --el-button-hover-border-color: rgba(58, 123, 232, 0.7);
--el-button-active-bg-color: rgba(43, 107, 211, 0.28); --el-button-active-bg-color: rgba(43, 107, 211, 0.28);
@ -101,6 +136,18 @@ html.dark {
--el-button-bg-color: rgba(31, 138, 90, 0.12); --el-button-bg-color: rgba(31, 138, 90, 0.12);
--el-button-border-color: rgba(41, 164, 109, 0.5); --el-button-border-color: rgba(41, 164, 109, 0.5);
--el-button-text-color: #dbf6e8; --el-button-text-color: #dbf6e8;
--el-button-hover-text-color: var(--el-color-white);
--el-button-hover-bg-color: var(--el-color-success);
--el-button-hover-border-color: var(--el-color-success);
--el-button-active-bg-color: rgba(31, 138, 90, 0.28);
--el-button-active-border-color: rgba(31, 138, 90, 0.8);
}
.el-button--success.is-dashed {
--el-button-bg-color: rgba(31, 138, 90, 0.12);
--el-button-border-color: rgba(41, 164, 109, 0.5);
--el-button-text-color: #dbf6e8;
--el-button-hover-text-color: #dbf6e8;
--el-button-hover-bg-color: rgba(41, 164, 109, 0.2); --el-button-hover-bg-color: rgba(41, 164, 109, 0.2);
--el-button-hover-border-color: rgba(41, 164, 109, 0.7); --el-button-hover-border-color: rgba(41, 164, 109, 0.7);
--el-button-active-bg-color: rgba(31, 138, 90, 0.28); --el-button-active-bg-color: rgba(31, 138, 90, 0.28);
@ -121,6 +168,18 @@ html.dark {
--el-button-bg-color: rgba(184, 121, 34, 0.12); --el-button-bg-color: rgba(184, 121, 34, 0.12);
--el-button-border-color: rgba(214, 149, 59, 0.5); --el-button-border-color: rgba(214, 149, 59, 0.5);
--el-button-text-color: #ffecc8; --el-button-text-color: #ffecc8;
--el-button-hover-text-color: var(--el-color-white);
--el-button-hover-bg-color: var(--el-color-warning);
--el-button-hover-border-color: var(--el-color-warning);
--el-button-active-bg-color: rgba(184, 121, 34, 0.28);
--el-button-active-border-color: rgba(184, 121, 34, 0.8);
}
.el-button--warning.is-dashed {
--el-button-bg-color: rgba(184, 121, 34, 0.12);
--el-button-border-color: rgba(214, 149, 59, 0.5);
--el-button-text-color: #ffecc8;
--el-button-hover-text-color: #ffecc8;
--el-button-hover-bg-color: rgba(214, 149, 59, 0.2); --el-button-hover-bg-color: rgba(214, 149, 59, 0.2);
--el-button-hover-border-color: rgba(214, 149, 59, 0.7); --el-button-hover-border-color: rgba(214, 149, 59, 0.7);
--el-button-active-bg-color: rgba(184, 121, 34, 0.28); --el-button-active-bg-color: rgba(184, 121, 34, 0.28);
@ -141,6 +200,18 @@ html.dark {
--el-button-bg-color: rgba(178, 74, 74, 0.12); --el-button-bg-color: rgba(178, 74, 74, 0.12);
--el-button-border-color: rgba(209, 96, 96, 0.5); --el-button-border-color: rgba(209, 96, 96, 0.5);
--el-button-text-color: #ffd6d6; --el-button-text-color: #ffd6d6;
--el-button-hover-text-color: var(--el-color-white);
--el-button-hover-bg-color: var(--el-color-danger);
--el-button-hover-border-color: var(--el-color-danger);
--el-button-active-bg-color: rgba(178, 74, 74, 0.28);
--el-button-active-border-color: rgba(178, 74, 74, 0.8);
}
.el-button--danger.is-dashed {
--el-button-bg-color: rgba(178, 74, 74, 0.12);
--el-button-border-color: rgba(209, 96, 96, 0.5);
--el-button-text-color: #ffd6d6;
--el-button-hover-text-color: #ffd6d6;
--el-button-hover-bg-color: rgba(209, 96, 96, 0.2); --el-button-hover-bg-color: rgba(209, 96, 96, 0.2);
--el-button-hover-border-color: rgba(209, 96, 96, 0.7); --el-button-hover-border-color: rgba(209, 96, 96, 0.7);
--el-button-active-bg-color: rgba(178, 74, 74, 0.28); --el-button-active-bg-color: rgba(178, 74, 74, 0.28);
@ -161,6 +232,18 @@ html.dark {
--el-button-bg-color: rgba(75, 85, 99, 0.16); --el-button-bg-color: rgba(75, 85, 99, 0.16);
--el-button-border-color: rgba(102, 112, 133, 0.55); --el-button-border-color: rgba(102, 112, 133, 0.55);
--el-button-text-color: #e5e7eb; --el-button-text-color: #e5e7eb;
--el-button-hover-text-color: var(--el-color-white);
--el-button-hover-bg-color: var(--el-color-info);
--el-button-hover-border-color: var(--el-color-info);
--el-button-active-bg-color: rgba(75, 85, 99, 0.3);
--el-button-active-border-color: rgba(75, 85, 99, 0.85);
}
.el-button--info.is-dashed {
--el-button-bg-color: rgba(75, 85, 99, 0.16);
--el-button-border-color: rgba(102, 112, 133, 0.55);
--el-button-text-color: #e5e7eb;
--el-button-hover-text-color: #e5e7eb;
--el-button-hover-bg-color: rgba(102, 112, 133, 0.22); --el-button-hover-bg-color: rgba(102, 112, 133, 0.22);
--el-button-hover-border-color: rgba(102, 112, 133, 0.75); --el-button-hover-border-color: rgba(102, 112, 133, 0.75);
--el-button-active-bg-color: rgba(75, 85, 99, 0.3); --el-button-active-bg-color: rgba(75, 85, 99, 0.3);

View File

@ -34,7 +34,7 @@
<transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul"> <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul">
<li v-for="(file, index) in fileList" :key="file.uid" class="el-upload-list__item ele-upload-list__item-content"> <li v-for="(file, index) in fileList" :key="file.uid" class="el-upload-list__item ele-upload-list__item-content">
<el-link :href="`${file.url}`" :underline="false" target="_blank"> <el-link :href="`${file.url}`" :underline="false" target="_blank">
<span class="el-icon-document"> {{ getFileName(file.name) }} </span> <el-icon><document /></el-icon> {{ getFileName(file.name) }}
</el-link> </el-link>
<div class="ele-upload-list__item-content-action"> <div class="ele-upload-list__item-content-action">
<el-button type="danger" v-if="!disabled" link @click="handleDelete(index)">删除</el-button> <el-button type="danger" v-if="!disabled" link @click="handleDelete(index)">删除</el-button>

View File

@ -11,18 +11,20 @@ import { useTagsViewStore } from '@/store/modules/tagsView';
const tagAndTagSpacing = ref(4); const tagAndTagSpacing = ref(4);
const scrollContainerRef = ref<ElScrollbarInstance>(); const scrollContainerRef = ref<ElScrollbarInstance>();
const scrollWrapper = computed(() => scrollContainerRef.value?.$refs.wrapRef); const scrollWrapper = computed<HTMLDivElement | undefined>(() => scrollContainerRef.value?.wrapRef);
onMounted(() => { onMounted(() => {
scrollWrapper.value?.addEventListener('scroll', emitScroll, true); scrollWrapper.value?.addEventListener('scroll', emitScroll, true);
}); });
onBeforeUnmount(() => { onBeforeUnmount(() => {
scrollWrapper.value?.removeEventListener('scroll', emitScroll); scrollWrapper.value?.removeEventListener('scroll', emitScroll, true);
}); });
const handleScroll = (e: WheelEvent) => { const handleScroll = (e: WheelEvent) => {
const eventDelta = (e as any).wheelDelta || -e.deltaY * 40; const eventDelta = (e as any).wheelDelta || -e.deltaY * 40;
const $scrollWrapper = scrollWrapper.value; const $scrollWrapper = scrollWrapper.value;
if (!$scrollWrapper) return;
$scrollWrapper.scrollLeft = $scrollWrapper.scrollLeft + eventDelta / 4; $scrollWrapper.scrollLeft = $scrollWrapper.scrollLeft + eventDelta / 4;
}; };
const emits = defineEmits(['scroll']); const emits = defineEmits(['scroll']);
@ -37,6 +39,7 @@ const moveToTarget = (currentTag: RouteLocationNormalized) => {
const $container = scrollContainerRef.value?.$el; const $container = scrollContainerRef.value?.$el;
const $containerWidth = $container.offsetWidth; const $containerWidth = $container.offsetWidth;
const $scrollWrapper = scrollWrapper.value; const $scrollWrapper = scrollWrapper.value;
if (!$scrollWrapper) return;
let firstTag = null; let firstTag = null;
let lastTag = null; let lastTag = null;

View File

@ -7,7 +7,6 @@ import { NavTypeEnum } from '@/enums/NavTypeEnum';
export const useSettingsStore = defineStore('setting', () => { export const useSettingsStore = defineStore('setting', () => {
const storageSetting = useStorage<LayoutSetting>('layout-setting', { const storageSetting = useStorage<LayoutSetting>('layout-setting', {
topNav: defaultSettings.topNav,
tagsView: defaultSettings.tagsView, tagsView: defaultSettings.tagsView,
tagsIcon: defaultSettings.tagsIcon, tagsIcon: defaultSettings.tagsIcon,
fixedHeader: defaultSettings.fixedHeader, fixedHeader: defaultSettings.fixedHeader,

View File

@ -33,7 +33,7 @@
* 部署方式 Docker 容器编排 一键部署业务集群<br /> * 部署方式 Docker 容器编排 一键部署业务集群<br />
* 国际化 SpringMessage Spring标准国际化方案<br /> * 国际化 SpringMessage Spring标准国际化方案<br />
</p> </p>
<p><b>当前版本:</b> <span>v5.6.1</span></p> <p><b>当前版本:</b> <span>v5.6.2</span></p>
<p> <p>
<el-tag type="danger">&yen;免费开源</el-tag> <el-tag type="danger">&yen;免费开源</el-tag>
</p> </p>
@ -77,7 +77,7 @@
* 分布式监控 PrometheusGrafana 全方位性能监控<br /> * 分布式监控 PrometheusGrafana 全方位性能监控<br />
* 其余与 Vue 版本一致<br /> * 其余与 Vue 版本一致<br />
</p> </p>
<p><b>当前版本:</b> <span>v2.6.1</span></p> <p><b>当前版本:</b> <span>v2.6.2</span></p>
<p> <p>
<el-tag type="danger">&yen;免费开源</el-tag> <el-tag type="danger">&yen;免费开源</el-tag>
</p> </p>

View File

@ -67,7 +67,7 @@
<span class="link-type" @click.stop="handleTypeRowClick(scope.row)">{{ scope.row.dictType }}</span> <span class="link-type" @click.stop="handleTypeRowClick(scope.row)">{{ scope.row.dictType }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" align="center" prop="remark" width="160"/> <el-table-column label="备注" align="center" prop="remark" width="160" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> <el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template #default="scope"> <template #default="scope">
<span>{{ proxy.parseTime(scope.row.createTime) }}</span> <span>{{ proxy.parseTime(scope.row.createTime) }}</span>
@ -213,13 +213,15 @@
<el-input v-model="typeForm.dictName" placeholder="请输入字典名称" /> <el-input v-model="typeForm.dictName" placeholder="请输入字典名称" />
</el-form-item> </el-form-item>
<el-form-item prop="dictType"> <el-form-item prop="dictType">
<template #label>
<span>
<el-tooltip content="数据存储中的Key值sys_user_sex" placement="top">
<el-icon><question-filled /></el-icon>
</el-tooltip>
字典类型
</span>
</template>
<el-input v-model="typeForm.dictType" placeholder="请输入字典类型" maxlength="100" /> <el-input v-model="typeForm.dictType" placeholder="请输入字典类型" maxlength="100" />
<span slot="label">
<el-tooltip content="数据存储中的Key值sys_user_sex" placement="top">
<i class="el-icon-question"></i>
</el-tooltip>
字典类型
</span>
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="remark"> <el-form-item label="备注" prop="remark">
<el-input v-model="typeForm.remark" type="textarea" placeholder="请输入内容"></el-input> <el-input v-model="typeForm.remark" type="textarea" placeholder="请输入内容"></el-input>
@ -671,5 +673,4 @@ onMounted(() => {
.dict-table-wrap { .dict-table-wrap {
overflow-x: auto; overflow-x: auto;
} }
</style> </style>

View File

@ -82,44 +82,6 @@
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12">
<el-form-item prop="genType">
<template #label>
生成代码方式
<el-tooltip content="默认为zip压缩包下载也可以自定义生成路径" placement="top">
<el-icon><question-filled /></el-icon>
</el-tooltip>
</template>
<el-radio v-model="infoForm.genType" value="0">zip压缩包</el-radio>
<el-radio v-model="infoForm.genType" value="1">自定义路径</el-radio>
</el-form-item>
</el-col>
<el-col v-if="infoForm.genType == '1'" :span="24">
<el-form-item prop="genPath">
<template #label>
自定义路径
<el-tooltip content="填写磁盘绝对路径若不填写则生成到当前Web项目下" placement="top">
<el-icon><question-filled /></el-icon>
</el-tooltip>
</template>
<el-input v-model="infoForm.genPath">
<template #append>
<el-dropdown>
<el-button type="primary">
最近路径快速选择
<i class="el-icon-arrow-down el-icon--right"></i>
</el-button>
<template #dropdown>
<el-dropdown-menu>
<el-dropdown-item @click="infoForm.genPath = '/'">恢复默认的生成基础路径</el-dropdown-item>
</el-dropdown-menu>
</template>
</el-dropdown>
</template>
</el-input>
</el-form-item>
</el-col>
</el-row> </el-row>
<template v-if="info.tplCategory == 'tree'"> <template v-if="info.tplCategory == 'tree'">

View File

@ -113,7 +113,7 @@
</template> </template>
<script setup name="Gen" lang="ts"> <script setup name="Gen" lang="ts">
import { delTable, genCode, getDataNames, listTable, previewTable, synchDb } from '@/api/tool/gen'; import { delTable, getDataNames, listTable, previewTable, synchDb } from '@/api/tool/gen';
import { TableQuery, TableVO } from '@/api/tool/gen/types'; import { TableQuery, TableVO } from '@/api/tool/gen/types';
import router from '@/router'; import router from '@/router';
import ImportTable from './importTable.vue'; import ImportTable from './importTable.vue';
@ -181,12 +181,7 @@ const handleGenTable = async (row?: TableVO) => {
proxy?.$modal.msgError('请选择要生成的数据'); proxy?.$modal.msgError('请选择要生成的数据');
return; return;
} }
if (row?.genType === '1') { proxy?.$download.zip('/tool/gen/batchGenCode?tableIdStr=' + tbIds, 'ruoyi.zip');
await genCode(row.tableId);
proxy?.$modal.msgSuccess('成功生成到自定义路径:' + row.genPath);
} else {
proxy?.$download.zip('/tool/gen/batchGenCode?tableIdStr=' + tbIds, 'ruoyi.zip');
}
}; };
/** 同步数据库操作 */ /** 同步数据库操作 */
const handleSynchDb = async (row: TableVO) => { const handleSynchDb = async (row: TableVO) => {