瀏覽代碼

feat(performance/monthlyAssess): 新增干部月度考核批量删除功能

1. 新增deleteCadreAssessment接口用于删除干部月度考核数据
2. 为非干部和干部表格添加多选列,实现选中数据功能
3. 新增批量删除按钮和对应的处理逻辑,支持批量删除对应考核数据
huoyi 3 周之前
父節點
當前提交
6e48e18568
共有 2 個文件被更改,包括 41 次插入4 次删除
  1. 8 0
      src/api/performance/monthlyAssess.js
  2. 33 4
      src/views/performanceManage/monthlyAssess/index.vue

+ 8 - 0
src/api/performance/monthlyAssess.js

@@ -72,3 +72,11 @@ export function generateNonCadreAssessment(query) {
72 72
     method: 'get',
73 73
   })
74 74
 }
75
+
76
+//删除干部月度考核
77
+export function deleteCadreAssessment(ids) {
78
+  return request({
79
+    url: `/personnel/cadre-assessment/${ids}`,
80
+    method: 'delete',
81
+  })
82
+}

+ 33 - 4
src/views/performanceManage/monthlyAssess/index.vue

@@ -56,6 +56,7 @@
56 56
       <div v-if="currentTab === 'non-cadre'" class="left-buttons">
57 57
         <el-button type="primary" plain icon="Plus" @click="handleAdd">新增</el-button>
58 58
         <el-button type="warning" plain icon="Download" @click="handleExport">导出</el-button>
59
+        <el-button type="danger" plain icon="Delete" :disabled="selectedIds.length === 0" @click="handleBatchDelete">删除</el-button>
59 60
       </div>
60 61
       <!-- 干部模式时显示空白占位 -->
61 62
       <div v-else class="left-buttons"></div>
@@ -68,8 +69,8 @@
68 69
     <!-- 非干部数据表格 -->
69 70
     <div v-if="currentTab === 'non-cadre'">
70 71
       <el-table v-loading="loading" :data="nonCadreList" border fit highlight-current-row
71
-        style="width: 100%; margin-top: 20px;">
72
-        <el-table-column label="大队" prop="brigadeName" align="center" min-width="100" />
72
+        style="width: 100%; margin-top: 20px;" @selection-change="handleSelectionChange">
73
+        <el-table-column type="selection" width="55" align="center" />
73 74
         <el-table-column label="用工形式" prop="employmentType" align="center" min-width="100">
74 75
           <template #default="scope">
75 76
             <dict-tag :options="employment_type" :value="scope.row.employmentType" />
@@ -155,7 +156,8 @@
155 156
     <!-- 干部数据表格 -->
156 157
     <div v-else>
157 158
       <el-table v-loading="loading" :data="cadreList" border fit highlight-current-row
158
-        style="width: 100%; margin-top: 20px;">
159
+        style="width: 100%; margin-top: 20px;" @selection-change="handleSelectionChange">
160
+        <el-table-column type="selection" width="55" align="center" />
159 161
         <el-table-column label="姓名" prop="name" align="center" min-width="120" />
160 162
         <el-table-column label="部门" prop="deptName" align="center" min-width="120" />
161 163
         <el-table-column label="岗位" prop="post" align="center" min-width="120">
@@ -592,7 +594,7 @@ import { ref, reactive, onMounted, getCurrentInstance, watch, nextTick } from 'v
592 594
 import { ElMessage, ElMessageBox } from 'element-plus'
593 595
 
594 596
 // API导入(需要根据实际API路径调整)
595
-import { listCadreAssessment, generateCadreAssessment, listNonCadreAssessment, addNonCadreAssessment, updateNonCadreAssessment, deleteNonCadreAssessment, exportNonCadreAssessment, generateNonCadreAssessment, getNonCadreAssessment } from '@/api/performance/monthlyAssess.js'
597
+import { listCadreAssessment, generateCadreAssessment, listNonCadreAssessment, addNonCadreAssessment, updateNonCadreAssessment, deleteNonCadreAssessment, exportNonCadreAssessment, generateNonCadreAssessment, getNonCadreAssessment, deleteCadreAssessment } from '@/api/performance/monthlyAssess.js'
596 598
 import { selectUserLeaderListByCondition, listUserPerformance } from '@/api/system/user.js'
597 599
 import { listIndicator } from '@/api/system/classificationAssess.js'
598 600
 import { queryAssessCategoryTreeAndIndicator } from '@/api/system/classificationAssessIndicator.js'
@@ -606,6 +608,7 @@ const total = ref(0)
606 608
 const queryFormRef = ref()
607 609
 const formRef = ref()
608 610
 const currentTab = ref('non-cadre')
611
+const selectedIds = ref([])
609 612
 
610 613
 // 监听tab切换
611 614
 watch(() => currentTab.value, () => {
@@ -1109,6 +1112,32 @@ const resetQuery = () => {
1109 1112
   getList()
1110 1113
 }
1111 1114
 
1115
+// 批量选择
1116
+const handleSelectionChange = (selection) => {
1117
+  selectedIds.value = selection.map(item => item.id)
1118
+}
1119
+
1120
+// 批量删除
1121
+const handleBatchDelete = () => {
1122
+  if (selectedIds.value.length === 0) {
1123
+    return
1124
+  }
1125
+  proxy.$modal.confirm(`是否确认删除选中的 ${selectedIds.value.length} 条数据?`).then(async () => {
1126
+    try {
1127
+      if (currentTab.value === 'non-cadre') {
1128
+        await deleteNonCadreAssessment(selectedIds.value.join(','))
1129
+      } else {
1130
+        await deleteCadreAssessment(selectedIds.value.join(','))
1131
+      }
1132
+      ElMessage.success('删除成功')
1133
+      selectedIds.value = []
1134
+      getList()
1135
+    } catch (error) {
1136
+      console.error('删除失败:', error)
1137
+    }
1138
+  }).catch(() => { })
1139
+}
1140
+
1112 1141
 // 新增
1113 1142
 const handleAdd = () => {
1114 1143
   dialog.visible = true