소스 검색

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
     method: 'get',
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
       <div v-if="currentTab === 'non-cadre'" class="left-buttons">
56
       <div v-if="currentTab === 'non-cadre'" class="left-buttons">
57
         <el-button type="primary" plain icon="Plus" @click="handleAdd">新增</el-button>
57
         <el-button type="primary" plain icon="Plus" @click="handleAdd">新增</el-button>
58
         <el-button type="warning" plain icon="Download" @click="handleExport">导出</el-button>
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
       </div>
60
       </div>
60
       <!-- 干部模式时显示空白占位 -->
61
       <!-- 干部模式时显示空白占位 -->
61
       <div v-else class="left-buttons"></div>
62
       <div v-else class="left-buttons"></div>
@@ -68,8 +69,8 @@
68
     <!-- 非干部数据表格 -->
69
     <!-- 非干部数据表格 -->
69
     <div v-if="currentTab === 'non-cadre'">
70
     <div v-if="currentTab === 'non-cadre'">
70
       <el-table v-loading="loading" :data="nonCadreList" border fit highlight-current-row
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
         <el-table-column label="用工形式" prop="employmentType" align="center" min-width="100">
74
         <el-table-column label="用工形式" prop="employmentType" align="center" min-width="100">
74
           <template #default="scope">
75
           <template #default="scope">
75
             <dict-tag :options="employment_type" :value="scope.row.employmentType" />
76
             <dict-tag :options="employment_type" :value="scope.row.employmentType" />
@@ -155,7 +156,8 @@
155
     <!-- 干部数据表格 -->
156
     <!-- 干部数据表格 -->
156
     <div v-else>
157
     <div v-else>
157
       <el-table v-loading="loading" :data="cadreList" border fit highlight-current-row
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
         <el-table-column label="姓名" prop="name" align="center" min-width="120" />
161
         <el-table-column label="姓名" prop="name" align="center" min-width="120" />
160
         <el-table-column label="部门" prop="deptName" align="center" min-width="120" />
162
         <el-table-column label="部门" prop="deptName" align="center" min-width="120" />
161
         <el-table-column label="岗位" prop="post" align="center" min-width="120">
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
 import { ElMessage, ElMessageBox } from 'element-plus'
594
 import { ElMessage, ElMessageBox } from 'element-plus'
593
 
595
 
594
 // API导入(需要根据实际API路径调整)
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
 import { selectUserLeaderListByCondition, listUserPerformance } from '@/api/system/user.js'
598
 import { selectUserLeaderListByCondition, listUserPerformance } from '@/api/system/user.js'
597
 import { listIndicator } from '@/api/system/classificationAssess.js'
599
 import { listIndicator } from '@/api/system/classificationAssess.js'
598
 import { queryAssessCategoryTreeAndIndicator } from '@/api/system/classificationAssessIndicator.js'
600
 import { queryAssessCategoryTreeAndIndicator } from '@/api/system/classificationAssessIndicator.js'
@@ -606,6 +608,7 @@ const total = ref(0)
606
 const queryFormRef = ref()
608
 const queryFormRef = ref()
607
 const formRef = ref()
609
 const formRef = ref()
608
 const currentTab = ref('non-cadre')
610
 const currentTab = ref('non-cadre')
611
+const selectedIds = ref([])
609
 
612
 
610
 // 监听tab切换
613
 // 监听tab切换
611
 watch(() => currentTab.value, () => {
614
 watch(() => currentTab.value, () => {
@@ -1109,6 +1112,32 @@ const resetQuery = () => {
1109
   getList()
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
 const handleAdd = () => {
1142
 const handleAdd = () => {
1114
   dialog.visible = true
1143
   dialog.visible = true