feat(backend): 实现多租户数据隔离与权限管理架构

refactor(backend): 重构模型基类支持租户与客户隔离
feat(backend): 添加客户模块相关模型、CRUD和参数校验
docs(backend): 新增SaaS数据隔离设计方案文档
refactor(backend): 优化日志模块并添加类型注解
fix(backend): 修正字典模块查询参数移除creator字段

style(frontend): 统一按钮组件代码格式
fix(frontend): 修复表格序号计算逻辑
chore(frontend): 更新lint脚本使用pnpm替代npm
This commit is contained in:
zhangtao
2025-11-23 18:59:43 +08:00
parent 749c97f4e3
commit 9a39a64faf
54 changed files with 5952 additions and 588 deletions
@@ -16,19 +16,10 @@
</el-icon>
<span class="status-text">{{ connectionStatusText }}</span>
</div>
<el-button
v-if="messages.length > 0"
text
:icon="Delete"
@click="clearCurrentChat"
>
<el-button v-if="messages.length > 0" text :icon="Delete" @click="clearCurrentChat">
清空对话
</el-button>
<el-button
text
:icon="Setting"
@click="toggleConnection"
>
<el-button text :icon="Setting" @click="toggleConnection">
{{ isConnected ? "断开连接" : "重新连接" }}
</el-button>
</div>
@@ -81,7 +81,14 @@
</el-button>
</el-col>
<el-col :span="1.5">
<el-button v-hasPerm="['module_application:job:delete']" type="warning" icon="delete" @click="handleClearLog">清空日志</el-button>
<el-button
v-hasPerm="['module_application:job:delete']"
type="warning"
icon="delete"
@click="handleClearLog"
>
清空日志
</el-button>
</el-col>
</el-row>
</div>
@@ -90,7 +97,13 @@
<el-col :span="1.5">
<el-tooltip content="导出">
<!-- 将直接导出改为打开导出弹窗 -->
<el-button v-hasPerm="['module_application:job:export']" type="warning" icon="download" circle @click="handleOpenExportsModal" />
<el-button
v-hasPerm="['module_application:job:export']"
type="warning"
icon="download"
circle
@click="handleOpenExportsModal"
/>
</el-tooltip>
</el-col>
<el-col :span="1.5">
@@ -136,12 +136,7 @@
</el-col>
<el-col :span="1.5">
<el-tooltip content="刷新">
<el-button
type="primary"
icon="refresh"
circle
@click="handleRefresh"
/>
<el-button type="primary" icon="refresh" circle @click="handleRefresh" />
</el-tooltip>
</el-col>
</el-row>
@@ -164,7 +159,7 @@
<el-empty :image-size="80" description="暂无数据" />
</template>
<el-table-column type="selection" align="center" min-width="55" />
<el-table-column type="index" label="序号" fixed min-width="60">
<el-table-column type="index" fixed label="序号" min-width="60">
<template #default="scope">
{{ (queryFormData.page_no - 1) * queryFormData.page_size + scope.$index + 1 }}
</template>
@@ -339,11 +339,7 @@ defineOptions({
});
import { ref, reactive, onMounted } from "vue";
import DemoAPI, {
DemoTable,
DemoForm,
DemoPageQuery,
} from "@/api/module_example/demo";
import DemoAPI, { DemoTable, DemoForm, DemoPageQuery } from "@/api/module_example/demo";
import DatePicker from "@/components/DatePicker/index.vue";
import { formatToDateTime } from "@/utils/dateUtil";