|
|
@@ -47,54 +47,67 @@
|
|
47
|
47
|
<div v-if="currentTab === 'non-cadre'">
|
|
48
|
48
|
<el-table v-loading="loading" :data="nonCadreList" border fit highlight-current-row style="width: 100%; margin-top: 20px;">
|
|
49
|
49
|
<el-table-column label="大队" prop="brigade" align="center" min-width="100" />
|
|
50
|
|
- <el-table-column label="用工形式" prop="employmentType" align="center" min-width="100" />
|
|
51
|
|
- <el-table-column label="员工编号" prop="employeeCode" align="center" min-width="120" />
|
|
52
|
|
- <el-table-column label="员工姓名" prop="employeeName" align="center" min-width="120" />
|
|
53
|
|
- <el-table-column label="考核组" prop="assessmentGroup" align="center" min-width="100" />
|
|
54
|
|
- <el-table-column label="分管班组长" prop="teamLeader" align="center" min-width="120" />
|
|
55
|
|
- <el-table-column label="分管主管" prop="supervisor" align="center" min-width="120" />
|
|
56
|
|
- <el-table-column label="红线指标触发次数" prop="redLineTriggerCount" align="center" min-width="140" />
|
|
57
|
|
- <el-table-column label="红线指标依据" prop="redLineBasis" align="center" min-width="120" show-overflow-tooltip />
|
|
58
|
|
- <el-table-column label="核心指标分值" prop="coreIndicatorScore" align="center" min-width="120" />
|
|
59
|
|
- <el-table-column label="核心指标依据" prop="coreIndicatorBasis" align="center" min-width="120" show-overflow-tooltip />
|
|
60
|
|
- <el-table-column label="其他指标分值" prop="otherIndicatorScore" align="center" min-width="120" />
|
|
61
|
|
- <el-table-column label="其他指标依据" prop="otherIndicatorBasis" align="center" min-width="120" show-overflow-tooltip />
|
|
|
50
|
+ <el-table-column label="用工形式" prop="employmentType" align="center" min-width="100">
|
|
|
51
|
+ <template #default="scope">
|
|
|
52
|
+ <dict-tag :options="employment_type" :value="scope.row.employmentType" />
|
|
|
53
|
+ </template>
|
|
|
54
|
+ </el-table-column>
|
|
|
55
|
+ <el-table-column label="岗位" prop="post" align="center" min-width="120">
|
|
|
56
|
+ <template #default="scope">
|
|
|
57
|
+ <dict-tag :options="post" :value="scope.row.post" />
|
|
|
58
|
+ </template>
|
|
|
59
|
+ </el-table-column>
|
|
|
60
|
+ <el-table-column label="员工姓名" prop="userName" align="center" min-width="120" />
|
|
|
61
|
+ <el-table-column label="考核组" prop="assessmentTeam" align="center" min-width="100">
|
|
|
62
|
+ <template #default="scope">
|
|
|
63
|
+ <dict-tag :options="assessment_team" :value="scope.row.assessmentTeam" />
|
|
|
64
|
+ </template>
|
|
|
65
|
+ </el-table-column>
|
|
|
66
|
+ <el-table-column label="分管班组长" prop="deputyTeamLeaderName" align="center" min-width="120" />
|
|
|
67
|
+ <el-table-column label="分管主管" prop="deputySupervisorName" align="center" min-width="120" />
|
|
|
68
|
+ <el-table-column label="分管经理" prop="deputyManagerName" align="center" min-width="120" />
|
|
|
69
|
+ <el-table-column label="红线指标触发次数" prop="redLineIndexTriggerCount" align="center" min-width="140" />
|
|
|
70
|
+ <el-table-column label="红线指标依据" prop="redLineIndexAccordList" align="center" min-width="120" show-overflow-tooltip />
|
|
|
71
|
+ <el-table-column label="核心指标分值" prop="coreIndexScore" align="center" min-width="120" />
|
|
|
72
|
+ <el-table-column label="核心指标依据" prop="coreIndexAccordList" align="center" min-width="120" show-overflow-tooltip />
|
|
|
73
|
+ <el-table-column label="其他指标分值" prop="otherIndexScore" align="center" min-width="120" />
|
|
|
74
|
+ <el-table-column label="其他指标依据" prop="otherIndexAccordList" align="center" min-width="120" show-overflow-tooltip />
|
|
62
|
75
|
|
|
63
|
|
- <el-table-column label="其他指标中的安全(仅含SOC/站品控检查扣分)分值" prop="safetyWithSocScore" align="center" min-width="200" show-overflow-tooltip />
|
|
64
|
|
- <el-table-column label="其他指标中的安全(仅含SOC/站品控检查扣分)依据" prop="safetyWithSocBasis" align="center" min-width="200" show-overflow-tooltip />
|
|
|
76
|
+ <el-table-column label="其他指标中的安全(仅含SOC/站品控检查扣分)分值" prop="otherIndexSafetyScoreWithSocStationQcDeduction" align="center" min-width="200" show-overflow-tooltip />
|
|
|
77
|
+ <el-table-column label="其他指标中的安全(仅含SOC/站品控检查扣分)依据" prop="otherIndexSafetyScoreWithSocStationQcAccordList" align="center" min-width="200" show-overflow-tooltip />
|
|
65
|
78
|
|
|
66
|
|
- <el-table-column label="其他指标中的安全(不含SOC/站品控检查扣分)分值" prop="safetyWithoutSocScore" align="center" min-width="200" show-overflow-tooltip />
|
|
67
|
|
- <el-table-column label="其他指标中的安全(不含SOC/站品控检查扣分)依据" prop="safetyWithoutSocBasis" align="center" min-width="200" show-overflow-tooltip />
|
|
|
79
|
+ <el-table-column label="其他指标中的安全(不含SOC/站品控检查扣分)分值" prop="otherIndexSafetyScoreWithoutSocStationQcDeduction" align="center" min-width="200" show-overflow-tooltip />
|
|
|
80
|
+ <el-table-column label="其他指标中的安全(不含SOC/站品控检查扣分)依据" prop="otherIndexSafetyScoreWithoutSocStationQcAccordList" align="center" min-width="200" show-overflow-tooltip />
|
|
68
|
81
|
|
|
69
|
|
- <el-table-column label="其他指标中的非安全指标扣分" prop="nonSafetyDeduction" align="center" min-width="160" show-overflow-tooltip />
|
|
70
|
|
- <el-table-column label="其他指标中的非安全指标扣分依据" prop="nonSafetyDeductionBasis" align="center" min-width="160" show-overflow-tooltip />
|
|
|
82
|
+ <el-table-column label="其他指标中的非安全指标扣分" prop="otherIndexNonSafetyDeduction" align="center" min-width="160" show-overflow-tooltip />
|
|
|
83
|
+ <el-table-column label="其他指标中的非安全指标扣分依据" prop="otherIndexNonSafetyAccordList" align="center" min-width="160" show-overflow-tooltip />
|
|
71
|
84
|
|
|
72
|
|
- <el-table-column label="非核心安全+核心扣分" prop="nonCoreSafetyCoreDeduction" align="center" min-width="140" />
|
|
73
|
|
- <el-table-column label="SOC/站品控检查的涉及核心、安全指标扣分" prop="socSafetyCoreDeduction" align="center" min-width="200" show-overflow-tooltip />
|
|
74
|
|
- <el-table-column label="SOC/站品控检查的涉及核心、安全指标扣分依据" prop="socSafetyCoreDeductionBasis" align="center" min-width="200" show-overflow-tooltip />
|
|
|
85
|
+ <el-table-column label="非核心安全+核心扣分" prop="nonCoreSafetyPlusCoreDeduction" align="center" min-width="140" />
|
|
|
86
|
+ <el-table-column label="SOC/站品控检查的涉及核心、安全指标扣分" prop="socStationQcInvolvedCoreSafetyDeduction" align="center" min-width="200" show-overflow-tooltip />
|
|
|
87
|
+ <el-table-column label="SOC/站品控检查的涉及核心、安全指标扣分依据" prop="socStationQcInvolvedCoreSafetyAccordList" align="center" min-width="200" show-overflow-tooltip />
|
|
75
|
88
|
|
|
76
|
|
- <el-table-column label="分管员工数量" prop="managedEmployeeCount" align="center" min-width="120" />
|
|
77
|
|
- <el-table-column label="扣分平均值" prop="averageDeduction" align="center" min-width="100" />
|
|
|
89
|
+ <el-table-column label="分管员工数量" prop="inChargeEmployeeCount" align="center" min-width="120" />
|
|
|
90
|
+ <el-table-column label="扣分平均值" prop="deductionAverage" align="center" min-width="100" />
|
|
78
|
91
|
<el-table-column label="总分" prop="totalScore" align="center" min-width="100" sortable />
|
|
79
|
|
- <el-table-column label="奖励明细" prop="rewardDetails" align="center" min-width="120" show-overflow-tooltip />
|
|
80
|
|
- <el-table-column label="惩罚明细" prop="penaltyDetails" align="center" min-width="120" show-overflow-tooltip />
|
|
|
92
|
+ <el-table-column label="奖励明细" prop="rewardAccordList" align="center" min-width="120" show-overflow-tooltip />
|
|
|
93
|
+ <el-table-column label="惩罚明细" prop="punishmentAccordList" align="center" min-width="120" show-overflow-tooltip />
|
|
81
|
94
|
<el-table-column label="奖励(元)" prop="rewardAmount" align="center" min-width="100" />
|
|
82
|
|
- <el-table-column label="扣罚(元)" prop="penaltyAmount" align="center" min-width="100" />
|
|
|
95
|
+ <el-table-column label="扣罚(元)" prop="punishmentAmount" align="center" min-width="100" />
|
|
83
|
96
|
<el-table-column label="考核结果" prop="assessmentResult" align="center" min-width="100" />
|
|
84
|
97
|
<el-table-column label="考核结果备注" prop="assessmentResultRemark" align="center" min-width="140" show-overflow-tooltip />
|
|
85
|
98
|
<el-table-column label="应用方式" prop="applicationMethod" align="center" min-width="100" />
|
|
86
|
99
|
<el-table-column label="应用方式备注" prop="applicationMethodRemark" align="center" min-width="140" show-overflow-tooltip />
|
|
87
|
|
- <el-table-column label="是否豁免" prop="isExempted" align="center" min-width="100">
|
|
|
100
|
+ <el-table-column label="是否豁免" prop="exemption" align="center" min-width="100">
|
|
88
|
101
|
<template #default="scope">
|
|
89
|
|
- <el-tag :type="scope.row.isExempted ? 'success' : 'info'">
|
|
90
|
|
- {{ scope.row.isExempted ? '是' : '否' }}
|
|
|
102
|
+ <el-tag :type="scope.row.exemption ? 'success' : 'info'">
|
|
|
103
|
+ {{ scope.row.exemption ? '是' : '否' }}
|
|
91
|
104
|
</el-tag>
|
|
92
|
105
|
</template>
|
|
93
|
106
|
</el-table-column>
|
|
94
|
|
- <el-table-column label="是否豁免备注" prop="exemptionRemark" align="center" min-width="140" show-overflow-tooltip />
|
|
|
107
|
+ <el-table-column label="是否豁免备注" prop="exemptionReasonRemark" align="center" min-width="140" show-overflow-tooltip />
|
|
95
|
108
|
<el-table-column label="考核月份" prop="assessmentMonth" align="center" min-width="120" />
|
|
96
|
109
|
|
|
97
|
|
- <el-table-column label="操作" align="center" width="120" fixed="right">
|
|
|
110
|
+ <el-table-column label="操作" align="center" width="150" fixed="right">
|
|
98
|
111
|
<template #default="scope">
|
|
99
|
112
|
<el-button link type="primary" icon="Edit" @click="handleEdit(scope.row, 'non-cadre')">修改</el-button>
|
|
100
|
113
|
<el-button link type="danger" icon="Delete" @click="handleDelete(scope.row)">删除</el-button>
|
|
|
@@ -147,8 +160,8 @@
|
|
147
|
160
|
<!-- 第一部分:基础信息 -->
|
|
148
|
161
|
<el-row :gutter="20">
|
|
149
|
162
|
<el-col :span="8">
|
|
150
|
|
- <el-form-item label="姓名" prop="employeeName">
|
|
151
|
|
- <el-input v-model="nonCadreForm.employeeName" placeholder="请输入姓名" />
|
|
|
163
|
+ <el-form-item label="姓名" prop="userName">
|
|
|
164
|
+ <el-input v-model="nonCadreForm.userName" placeholder="请输入姓名" />
|
|
152
|
165
|
</el-form-item>
|
|
153
|
166
|
</el-col>
|
|
154
|
167
|
<el-col :span="8">
|
|
|
@@ -173,43 +186,39 @@
|
|
173
|
186
|
<el-col :span="8">
|
|
174
|
187
|
<el-form-item label="用工形式" prop="employmentType">
|
|
175
|
188
|
<el-select v-model="nonCadreForm.employmentType" placeholder="请选择用工形式" style="width: 100%">
|
|
176
|
|
- <el-option v-for="item in employmentTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
189
|
+ <el-option v-for="item in employment_type" :key="item.value" :label="item.label" :value="item.value" />
|
|
177
|
190
|
</el-select>
|
|
178
|
191
|
</el-form-item>
|
|
179
|
192
|
</el-col>
|
|
180
|
193
|
<el-col :span="8">
|
|
181
|
|
- <el-form-item label="分管班组长" prop="teamLeader">
|
|
182
|
|
- <el-input v-model="nonCadreForm.teamLeader" placeholder="请输入分管班组长" />
|
|
|
194
|
+ <el-form-item label="分管班组长" prop="deputyTeamLeaderName">
|
|
|
195
|
+ <el-input v-model="nonCadreForm.deputyTeamLeaderName" placeholder="请输入分管班组长" />
|
|
183
|
196
|
</el-form-item>
|
|
184
|
197
|
</el-col>
|
|
185
|
198
|
<el-col :span="8">
|
|
186
|
|
- <el-form-item label="分管主管" prop="supervisor">
|
|
187
|
|
- <el-input v-model="nonCadreForm.supervisor" placeholder="请输入分管主管" />
|
|
|
199
|
+ <el-form-item label="分管主管" prop="deputySupervisorName">
|
|
|
200
|
+ <el-input v-model="nonCadreForm.deputySupervisorName" placeholder="请输入分管主管" />
|
|
188
|
201
|
</el-form-item>
|
|
189
|
202
|
</el-col>
|
|
190
|
203
|
</el-row>
|
|
191
|
204
|
|
|
192
|
205
|
<el-row :gutter="20">
|
|
193
|
206
|
<el-col :span="8">
|
|
194
|
|
- <el-form-item label="分管经理" prop="manager">
|
|
195
|
|
- <el-input v-model="nonCadreForm.manager" placeholder="请输入分管经理" />
|
|
|
207
|
+ <el-form-item label="分管经理" prop="deputyManagerName">
|
|
|
208
|
+ <el-input v-model="nonCadreForm.deputyManagerName" placeholder="请输入分管经理" />
|
|
196
|
209
|
</el-form-item>
|
|
197
|
210
|
</el-col>
|
|
198
|
211
|
<el-col :span="8">
|
|
199
|
|
- <el-form-item label="大队" prop="brigade">
|
|
200
|
|
- <el-select v-model="nonCadreForm.brigade" placeholder="请选择大队" style="width: 100%">
|
|
201
|
|
- <el-option label="一大队" value="1" />
|
|
202
|
|
- <el-option label="二大队" value="2" />
|
|
203
|
|
- <el-option label="三大队" value="3" />
|
|
|
212
|
+ <el-form-item label="考核组" prop="assessmentTeam">
|
|
|
213
|
+ <el-select v-model="nonCadreForm.assessmentTeam" placeholder="请选择考核组" style="width: 100%">
|
|
|
214
|
+ <el-option v-for="item in assessment_team" :key="item.value" :label="item.label" :value="item.value" />
|
|
204
|
215
|
</el-select>
|
|
205
|
216
|
</el-form-item>
|
|
206
|
217
|
</el-col>
|
|
207
|
218
|
<el-col :span="8">
|
|
208
|
|
- <el-form-item label="考核组" prop="assessmentGroup">
|
|
209
|
|
- <el-select v-model="nonCadreForm.assessmentGroup" placeholder="请选择考核组" style="width: 100%">
|
|
210
|
|
- <el-option label="一组" value="1" />
|
|
211
|
|
- <el-option label="二组" value="2" />
|
|
212
|
|
- <el-option label="三组" value="3" />
|
|
|
219
|
+ <el-form-item label="岗位" prop="post">
|
|
|
220
|
+ <el-select v-model="nonCadreForm.post" placeholder="请选择岗位" style="width: 100%">
|
|
|
221
|
+ <el-option v-for="item in post" :key="item.value" :label="item.label" :value="item.value" />
|
|
213
|
222
|
</el-select>
|
|
214
|
223
|
</el-form-item>
|
|
215
|
224
|
</el-col>
|
|
|
@@ -580,10 +589,10 @@ import { ref, reactive, onMounted, getCurrentInstance, watch } from 'vue'
|
|
580
|
589
|
import { ElMessage, ElMessageBox } from 'element-plus'
|
|
581
|
590
|
|
|
582
|
591
|
// API导入(需要根据实际API路径调整)
|
|
583
|
|
-import { listCadreAssessment, generateCadreAssessment } from '@/api/performance/monthlyAssess.js'
|
|
|
592
|
+import { listCadreAssessment, generateCadreAssessment, listNonCadreAssessment, addNonCadreAssessment, updateNonCadreAssessment, deleteNonCadreAssessment, exportNonCadreAssessment } from '@/api/performance/monthlyAssess.js'
|
|
584
|
593
|
|
|
585
|
594
|
const { proxy } = getCurrentInstance()
|
|
586
|
|
-const { post, work_area } = proxy.useDict('post', 'work_area')
|
|
|
595
|
+const { post, work_area, employment_type, assessment_team } = proxy.useDict('post', 'work_area', 'employment_type', 'assessment_team')
|
|
587
|
596
|
|
|
588
|
597
|
// 响应式数据
|
|
589
|
598
|
const loading = ref(false)
|
|
|
@@ -707,14 +716,6 @@ const dialog = reactive({
|
|
707
|
716
|
const nonCadreList = ref([])
|
|
708
|
717
|
const cadreList = ref([])
|
|
709
|
718
|
|
|
710
|
|
-// 选项配置
|
|
711
|
|
-const employmentTypeOptions = [
|
|
712
|
|
- { label: '正式员工', value: 'formal' },
|
|
713
|
|
- { label: '合同工', value: 'contract' },
|
|
714
|
|
- { label: '临时工', value: 'temporary' },
|
|
715
|
|
- { label: '实习生', value: 'intern' }
|
|
716
|
|
-]
|
|
717
|
|
-
|
|
718
|
719
|
const assessmentResultOptions = [
|
|
719
|
720
|
{ label: '优秀', value: 'excellent' },
|
|
720
|
721
|
{ label: '良好', value: 'good' },
|
|
|
@@ -774,9 +775,9 @@ const getList = async () => {
|
|
774
|
775
|
}
|
|
775
|
776
|
|
|
776
|
777
|
if (currentTab.value === 'non-cadre') {
|
|
777
|
|
- // const res = await getNonCadreMonthlyAssessList(params)
|
|
778
|
|
- // nonCadreList.value = res.rows || []
|
|
779
|
|
- // total.value = res.total || 0
|
|
|
778
|
+ const res = await listNonCadreAssessment(params)
|
|
|
779
|
+ nonCadreList.value = res.rows || []
|
|
|
780
|
+ total.value = res.total || 0
|
|
780
|
781
|
} else {
|
|
781
|
782
|
// 干部数据API
|
|
782
|
783
|
const res = await listCadreAssessment(params)
|
|
|
@@ -866,7 +867,7 @@ const handleDelete = async (row) => {
|
|
866
|
867
|
type: 'warning'
|
|
867
|
868
|
})
|
|
868
|
869
|
|
|
869
|
|
- await deleteNonCadreMonthlyAssess(row.id)
|
|
|
870
|
+ await deleteNonCadreAssessment(row.id)
|
|
870
|
871
|
ElMessage.success('删除成功')
|
|
871
|
872
|
getList()
|
|
872
|
873
|
} catch (error) {
|
|
|
@@ -884,10 +885,10 @@ const submitForm = async () => {
|
|
884
|
885
|
try {
|
|
885
|
886
|
if (dialog.type === 'non-cadre') {
|
|
886
|
887
|
if (dialog.title === '新增非干部月度考核') {
|
|
887
|
|
- await addNonCadreMonthlyAssess(nonCadreForm)
|
|
|
888
|
+ await addNonCadreAssessment(nonCadreForm)
|
|
888
|
889
|
ElMessage.success('新增成功')
|
|
889
|
890
|
} else {
|
|
890
|
|
- await updateNonCadreMonthlyAssess(nonCadreForm)
|
|
|
891
|
+ await updateNonCadreAssessment(nonCadreForm)
|
|
891
|
892
|
ElMessage.success('更新成功')
|
|
892
|
893
|
}
|
|
893
|
894
|
} else {
|
|
|
@@ -905,7 +906,22 @@ const submitForm = async () => {
|
|
905
|
906
|
// 导出
|
|
906
|
907
|
const handleExport = async () => {
|
|
907
|
908
|
try {
|
|
908
|
|
- ElMessage.success('导出功能开发中')
|
|
|
909
|
+ let params = { ...queryParams }
|
|
|
910
|
+
|
|
|
911
|
+ if (params.assessmentMonth) {
|
|
|
912
|
+ const [year, month] = params.assessmentMonth.split('-')
|
|
|
913
|
+ params.year = parseInt(year)
|
|
|
914
|
+ params.month = parseInt(month)
|
|
|
915
|
+ delete params.assessmentMonth
|
|
|
916
|
+ }
|
|
|
917
|
+
|
|
|
918
|
+ Object.keys(params).forEach(key => {
|
|
|
919
|
+ if (params[key] === null || params[key] === undefined || params[key] === '') {
|
|
|
920
|
+ delete params[key]
|
|
|
921
|
+ }
|
|
|
922
|
+ })
|
|
|
923
|
+
|
|
|
924
|
+ proxy.download('personnel/assessment/export', params, `非干部月度考核_${new Date().getTime()}.xlsx`)
|
|
909
|
925
|
} catch (error) {
|
|
910
|
926
|
ElMessage.error('导出失败')
|
|
911
|
927
|
}
|