diff --git a/README-清空功能快速应用.md b/README-清空功能快速应用.md
new file mode 100644
index 0000000..323fe52
--- /dev/null
+++ b/README-清空功能快速应用.md
@@ -0,0 +1,149 @@
+# 一键全部清空功能 - 超简化版本
+
+## 🎯 设计理念
+
+**后端只有一个通用接口**,通过业务模块标识匹配表名,前端配置极简。
+
+## 🔧 后端架构(已完成)
+
+### 核心组件
+- ✅ `CommonClearController` - 通用清空控制器
+- ✅ `CommonClearService` - 通用清空服务
+- ✅ `CommonClearMapper` - 通用清空数据访问层
+
+### 安全措施
+1. **白名单机制** - 只允许清空预定义的表
+2. **表名验证** - 正则校验,防止SQL注入
+3. **权限检查** - 动态权限验证
+4. **SQL关键字过滤** - 防止恶意攻击
+5. **长度限制** - 表名长度控制
+6. **操作日志** - 完整的审计日志
+
+## 🚀 前端快速集成(3步完成)
+
+### 步骤1:添加按钮(导入按钮后)
+```vue
+
+ 一键全部清空
+
+```
+
+### 步骤2:导入mixin
+```javascript
+import clearAllMixin from "@/mixins/clearAllMixin";
+
+export default {
+ name: "YourComponent",
+ mixins: [clearAllMixin],
+ // ... 其他代码
+}
+```
+
+### 步骤3:配置模块信息(created钩子中)
+```javascript
+created() {
+ // 其他代码...
+
+ // 配置清空功能(仅需3个参数)
+ this.clearAllConfig = {
+ moduleKey: '模块标识', // 见下方支持的模块列表
+ entityName: '显示名称', // 如:'日常故障记录'
+ permission: '权限标识' // 如:'ems/info:dailyFaultRecord:remove'
+ };
+}
+```
+
+## 📋 支持的模块列表(后端已配置)
+
+| 模块标识 | 实体名称 | 权限标识 |
+|---------|---------|---------|
+| `dailyFaultRecord` | 日常故障记录 | `ems/info:dailyFaultRecord:remove` |
+| `faultHandlingRecord` | 故障处置记录 | `ems/info:faultHandlingRecord:remove` |
+| `plcBufferBatteryLifecycle` | PLC缓冲电池生命周期 | `ems/info:plcBufferBatteryLifecycle:remove` |
+| `securityDoorBatteryLifecycle` | 安全门电池生命周期 | `ems/info:securityDoorBatteryLifecycle:remove` |
+| `upsBatteryLifecycle` | UPS电池生命周期 | `ems/info:upsBatteryLifecycle:remove` |
+| `sparePartsInventory` | 备件库记录 | `ems/info:sparePartsInventory:remove` |
+| `sparePartsUsageRecord` | 备件领用记录 | `ems/info:sparePartsUsageRecord:remove` |
+| `sparePartsRegistration` | 废旧备件登记 | `ems/info:sparePartsRegistration:remove` |
+| `supervisionChecklist` | 监督检查清单 | `ems/info:supervisionChecklist:remove` |
+| `sparePartsInventoryCheck` | 备件盘点记录 | `ems/info:sparePartsInventoryCheck:remove` |
+
+## 💡 实际应用示例
+
+### 日常故障记录页面(已完成)
+```vue
+
+
+
+ 一键全部清空
+
+
+
+
+```
+
+### 故障处置记录页面(示例)
+```javascript
+// 只需要修改配置
+this.clearAllConfig = {
+ moduleKey: 'faultHandlingRecord',
+ entityName: '故障处置记录',
+ permission: 'ems/info:faultHandlingRecord:remove'
+};
+```
+
+## ⚡ 添加新模块支持
+
+如需要支持新模块,只需要在后端 `CommonClearController` 的白名单中添加:
+
+```java
+put("新模块标识", new TableInfo("数据库表名", "显示名称", "权限标识"));
+```
+
+## 🛡️ 安全特性
+
+1. **三次确认机制** - 确保用户真的要执行操作
+2. **白名单限制** - 只能清空预定义的表
+3. **权限验证** - 检查用户权限
+4. **SQL安全** - 防止注入攻击
+5. **操作审计** - 记录所有操作日志
+
+## 📈 开发效率对比
+
+| 方案 | 后端代码量 | 前端集成步骤 | 新增模块成本 |
+|-----|-----------|-------------|-------------|
+| 原方案 | 每模块5个文件 | 8步 | 高 |
+| **新方案** | **1个通用接口** | **3步** | **极低** |
+
+## 🎉 总结
+
+- **后端**:一次开发,永久使用
+- **前端**:复制粘贴,秒级集成
+- **维护**:集中管理,安全可控
+- **扩展**:新增模块只需添加一行配置
+
+现在为任何页面添加清空功能,只需要3步,2分钟搞定!
\ No newline at end of file
diff --git a/src/mixins/clearAllMixin.js b/src/mixins/clearAllMixin.js
new file mode 100644
index 0000000..6100c8d
--- /dev/null
+++ b/src/mixins/clearAllMixin.js
@@ -0,0 +1,96 @@
+import request from '@/utils/request'
+
+export default {
+ data() {
+ return {
+ // 清空相关配置,需要在组件中设置
+ clearAllConfig: {
+ moduleKey: '', // 业务模块标识,如:'dailyFaultRecord'
+ entityName: '', // 实体名称,如:'日常故障记录'
+ permission: '' // 权限标识,如:'ems/info:dailyFaultRecord:remove'
+ }
+ }
+ },
+ methods: {
+ /**
+ * 一键全部清空数据
+ */
+ async handleClearAll() {
+ try {
+ // 配置验证
+ if (!this.clearAllConfig.moduleKey) {
+ this.$modal.msgError('清空功能配置错误:未设置模块标识');
+ return;
+ }
+
+ // 第一次确认
+ await this.$confirm(
+ `确定要清空所有${this.clearAllConfig.entityName}数据吗?此操作将删除所有记录!`,
+ '危险操作警告',
+ {
+ confirmButtonText: '继续',
+ cancelButtonText: '取消',
+ type: 'warning',
+ confirmButtonClass: 'el-button--danger'
+ }
+ );
+
+ // 第二次确认
+ await this.$confirm(
+ `再次确认:您真的要删除所有${this.clearAllConfig.entityName}数据吗?\n此操作不可撤销!`,
+ '二次确认',
+ {
+ confirmButtonText: '确认删除',
+ cancelButtonText: '取消',
+ type: 'error',
+ confirmButtonClass: 'el-button--danger'
+ }
+ );
+
+ // 第三次确认 - 输入确认
+ const { value } = await this.$prompt(
+ `最后确认:请输入"确认清空"来完成操作`,
+ '三次确认',
+ {
+ confirmButtonText: '执行清空',
+ cancelButtonText: '取消',
+ inputPattern: /^确认清空$/,
+ inputErrorMessage: '请输入"确认清空"',
+ inputPlaceholder: '请输入:确认清空',
+ type: 'error',
+ confirmButtonClass: 'el-button--danger'
+ }
+ );
+
+ if (value === '确认清空') {
+ // 执行清空操作
+ await this.executeClearAll();
+ }
+ } catch (error) {
+ // 用户取消操作
+ if (error !== 'cancel' && error !== 'close') {
+ this.$modal.msgError('清空操作失败:' + error.message);
+ }
+ }
+ },
+
+ /**
+ * 执行清空操作
+ * 调用通用的后端接口
+ */
+ async executeClearAll() {
+ try {
+ const response = await request({
+ url: `/ems/common/clearAll/${this.clearAllConfig.moduleKey}`,
+ method: 'delete'
+ });
+
+ this.$modal.msgSuccess(response.msg || `${this.clearAllConfig.entityName}数据已全部清空`);
+ // 刷新列表
+ this.getList && this.getList();
+ } catch (error) {
+ this.$modal.msgError('清空操作失败:' + (error.message || error));
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/views/ems/info/dailyFaultRecord/index.vue b/src/views/ems/info/dailyFaultRecord/index.vue
index 297923c..eb721cd 100644
--- a/src/views/ems/info/dailyFaultRecord/index.vue
+++ b/src/views/ems/info/dailyFaultRecord/index.vue
@@ -151,6 +151,16 @@
v-hasPermi="['ems/info:dailyFaultRecord:add']"
>导入
+
+ 一键全部清空
+
@@ -385,9 +395,11 @@
-
-
+ }, `
\ No newline at end of file
diff --git a/src/views/ems/info/sparePartsRegistration/index.vue b/src/views/ems/info/sparePartsRegistration/index.vue
index ba0a4bd..b03b029 100644
--- a/src/views/ems/info/sparePartsRegistration/index.vue
+++ b/src/views/ems/info/sparePartsRegistration/index.vue
@@ -124,6 +124,16 @@
v-hasPermi="['ems/info:sparePartsRegistration:export']"
>导出
+
+ 一键全部清空
+
@@ -349,11 +359,19 @@
import { listSparePartsRegistration, getSparePartsRegistration, delSparePartsRegistration, addSparePartsRegistration, updateSparePartsRegistration } from "@/api/ems/info/sparePartsRegistration";
import { getToken } from "@/utils/auth";
import { checkPermi } from "@/utils/permission";
+ import clearAllMixin from "@/mixins/clearAllMixin";
export default {
name: "SparePartsRegistration",
+ mixins: [clearAllMixin],
data() {
return {
+ // 清空功能配置
+ clearAllConfig: {
+ moduleKey: 'sparePartsRegistration',
+ entityName: '废旧备件登记',
+ permission: 'ems/info:sparePartsRegistration:remove'
+ },
// 遮罩层
loading: true,
// 选中数组
diff --git a/src/views/ems/info/sparePartsUsageRecord/index.vue b/src/views/ems/info/sparePartsUsageRecord/index.vue
index ddaf998..6934345 100644
--- a/src/views/ems/info/sparePartsUsageRecord/index.vue
+++ b/src/views/ems/info/sparePartsUsageRecord/index.vue
@@ -148,6 +148,16 @@
v-hasPermi="['ems/info:sparePartsUsageRecord:export']"
>导出
+
+ 一键全部清空
+
@@ -406,11 +416,19 @@
import { listSparePartsUsageRecord, getSparePartsUsageRecord, delSparePartsUsageRecord, addSparePartsUsageRecord, updateSparePartsUsageRecord } from "@/api/ems/info/sparePartsUsageRecord";
import { getToken } from "@/utils/auth";
import { checkPermi } from "@/utils/permission";
+ import clearAllMixin from "@/mixins/clearAllMixin";
export default {
name: "SparePartsUsageRecord",
+ mixins: [clearAllMixin],
data() {
return {
+ // 清空功能配置
+ clearAllConfig: {
+ moduleKey: 'sparePartsUsageRecord',
+ entityName: '备件领用记录',
+ permission: 'ems/info:sparePartsUsageRecord:remove'
+ },
// 遮罩层
loading: true,
// 选中数组
diff --git a/src/views/ems/info/supervisionChecklist/index.vue b/src/views/ems/info/supervisionChecklist/index.vue
index 13af0cd..4ff0e95 100644
--- a/src/views/ems/info/supervisionChecklist/index.vue
+++ b/src/views/ems/info/supervisionChecklist/index.vue
@@ -156,6 +156,16 @@
v-hasPermi="['ems/info:supervisionChecklist:export']"
>导出
+
+ 一键全部清空
+
@@ -464,11 +474,19 @@