|
|
@@ -140,46 +140,39 @@
|
|
140
|
140
|
<el-dialog :title="dialog.title" v-model="dialog.visible" width="80%" :close-on-click-modal="false">
|
|
141
|
141
|
<!-- 非干部表单 -->
|
|
142
|
142
|
<el-form v-if="dialog.type === 'non-cadre'" :model="nonCadreForm" ref="formRef" :rules="nonCadreRules" label-width="180px" class="form-container">
|
|
|
143
|
+ <!-- 第一部分:基础信息 -->
|
|
143
|
144
|
<el-row :gutter="20">
|
|
144
|
145
|
<el-col :span="8">
|
|
145
|
|
- <el-form-item label="大队" prop="brigade">
|
|
146
|
|
- <el-input v-model="nonCadreForm.brigade" placeholder="请输入大队" />
|
|
|
146
|
+ <el-form-item label="姓名" prop="employeeName">
|
|
|
147
|
+ <el-input v-model="nonCadreForm.employeeName" placeholder="请输入姓名" />
|
|
147
|
148
|
</el-form-item>
|
|
148
|
149
|
</el-col>
|
|
149
|
150
|
<el-col :span="8">
|
|
150
|
|
- <el-form-item label="用工形式" prop="employmentType">
|
|
151
|
|
- <el-select v-model="nonCadreForm.employmentType" placeholder="请选择用工形式" style="width: 100%">
|
|
152
|
|
- <el-option v-for="item in employmentTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
|
|
153
|
|
- </el-select>
|
|
|
151
|
+ <el-form-item label="考核月份" prop="assessmentMonth">
|
|
|
152
|
+ <el-date-picker v-model="nonCadreForm.assessmentMonth" type="month" placeholder="请选择考核月份"
|
|
|
153
|
+ value-format="YYYY-MM" style="width: 100%" />
|
|
154
|
154
|
</el-form-item>
|
|
155
|
155
|
</el-col>
|
|
156
|
156
|
<el-col :span="8">
|
|
157
|
|
- <el-form-item label="员工编号" prop="employeeCode">
|
|
158
|
|
- <el-input v-model="nonCadreForm.employeeCode" placeholder="请输入员工编号" />
|
|
159
|
|
- </el-form-item>
|
|
|
157
|
+ <div class="score-display">
|
|
|
158
|
+ <span class="score-label">总分:</span>
|
|
|
159
|
+ <span class="score-value">{{ nonCadreForm.totalScore }}</span>
|
|
|
160
|
+ <span class="result-label">考核结果:</span>
|
|
|
161
|
+ <span class="result-value" :class="{'text-danger': nonCadreForm.assessmentResult === 'unqualified'}">
|
|
|
162
|
+ {{ getResultText(nonCadreForm.assessmentResult) }}
|
|
|
163
|
+ </span>
|
|
|
164
|
+ </div>
|
|
160
|
165
|
</el-col>
|
|
161
|
166
|
</el-row>
|
|
162
|
167
|
|
|
163
|
168
|
<el-row :gutter="20">
|
|
164
|
169
|
<el-col :span="8">
|
|
165
|
|
- <el-form-item label="员工姓名" prop="employeeName">
|
|
166
|
|
- <el-input v-model="nonCadreForm.employeeName" placeholder="请输入员工姓名" />
|
|
167
|
|
- </el-form-item>
|
|
168
|
|
- </el-col>
|
|
169
|
|
- <el-col :span="8">
|
|
170
|
|
- <el-form-item label="考核组" prop="assessmentGroup">
|
|
171
|
|
- <el-input v-model="nonCadreForm.assessmentGroup" placeholder="请输入考核组" />
|
|
172
|
|
- </el-form-item>
|
|
173
|
|
- </el-col>
|
|
174
|
|
- <el-col :span="8">
|
|
175
|
|
- <el-form-item label="考核月份" prop="assessmentMonth">
|
|
176
|
|
- <el-date-picker v-model="nonCadreForm.assessmentMonth" type="month" placeholder="请选择考核月份"
|
|
177
|
|
- value-format="YYYY-MM" style="width: 100%" />
|
|
|
170
|
+ <el-form-item label="用工形式" prop="employmentType">
|
|
|
171
|
+ <el-select v-model="nonCadreForm.employmentType" placeholder="请选择用工形式" style="width: 100%">
|
|
|
172
|
+ <el-option v-for="item in employmentTypeOptions" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
173
|
+ </el-select>
|
|
178
|
174
|
</el-form-item>
|
|
179
|
175
|
</el-col>
|
|
180
|
|
- </el-row>
|
|
181
|
|
-
|
|
182
|
|
- <el-row :gutter="20">
|
|
183
|
176
|
<el-col :span="8">
|
|
184
|
177
|
<el-form-item label="分管班组长" prop="teamLeader">
|
|
185
|
178
|
<el-input v-model="nonCadreForm.teamLeader" placeholder="请输入分管班组长" />
|
|
|
@@ -190,199 +183,229 @@
|
|
190
|
183
|
<el-input v-model="nonCadreForm.supervisor" placeholder="请输入分管主管" />
|
|
191
|
184
|
</el-form-item>
|
|
192
|
185
|
</el-col>
|
|
193
|
|
- <el-col :span="8">
|
|
194
|
|
- <el-form-item label="分管员工数量" prop="managedEmployeeCount">
|
|
195
|
|
- <el-input-number v-model="nonCadreForm.managedEmployeeCount" :min="0" style="width: 100%" />
|
|
196
|
|
- </el-form-item>
|
|
197
|
|
- </el-col>
|
|
198
|
|
- </el-row>
|
|
199
|
|
-
|
|
200
|
|
- <el-divider content-position="left">红线指标</el-divider>
|
|
201
|
|
- <el-row :gutter="20">
|
|
202
|
|
- <el-col :span="12">
|
|
203
|
|
- <el-form-item label="红线指标触发次数" prop="redLineTriggerCount">
|
|
204
|
|
- <el-input-number v-model="nonCadreForm.redLineTriggerCount" :min="0" style="width: 100%" />
|
|
205
|
|
- </el-form-item>
|
|
206
|
|
- </el-col>
|
|
207
|
|
- <el-col :span="12">
|
|
208
|
|
- <el-form-item label="红线指标依据" prop="redLineBasis">
|
|
209
|
|
- <el-input v-model="nonCadreForm.redLineBasis" type="textarea" :rows="2" placeholder="请输入红线指标依据" />
|
|
210
|
|
- </el-form-item>
|
|
211
|
|
- </el-col>
|
|
212
|
|
- </el-row>
|
|
213
|
|
-
|
|
214
|
|
- <el-divider content-position="left">核心指标</el-divider>
|
|
215
|
|
- <el-row :gutter="20">
|
|
216
|
|
- <el-col :span="12">
|
|
217
|
|
- <el-form-item label="核心指标分值" prop="coreIndicatorScore">
|
|
218
|
|
- <el-input-number v-model="nonCadreForm.coreIndicatorScore" :min="0" :precision="2" style="width: 100%" />
|
|
219
|
|
- </el-form-item>
|
|
220
|
|
- </el-col>
|
|
221
|
|
- <el-col :span="12">
|
|
222
|
|
- <el-form-item label="核心指标依据" prop="coreIndicatorBasis">
|
|
223
|
|
- <el-input v-model="nonCadreForm.coreIndicatorBasis" type="textarea" :rows="2" placeholder="请输入核心指标依据" />
|
|
224
|
|
- </el-form-item>
|
|
225
|
|
- </el-col>
|
|
226
|
|
- </el-row>
|
|
227
|
|
-
|
|
228
|
|
- <el-divider content-position="left">其他指标</el-divider>
|
|
229
|
|
- <el-row :gutter="20">
|
|
230
|
|
- <el-col :span="12">
|
|
231
|
|
- <el-form-item label="其他指标分值" prop="otherIndicatorScore">
|
|
232
|
|
- <el-input-number v-model="nonCadreForm.otherIndicatorScore" :min="0" :precision="2" style="width: 100%" />
|
|
233
|
|
- </el-form-item>
|
|
234
|
|
- </el-col>
|
|
235
|
|
- <el-col :span="12">
|
|
236
|
|
- <el-form-item label="其他指标依据" prop="otherIndicatorBasis">
|
|
237
|
|
- <el-input v-model="nonCadreForm.otherIndicatorBasis" type="textarea" :rows="2" placeholder="请输入其他指标依据" />
|
|
238
|
|
- </el-form-item>
|
|
239
|
|
- </el-col>
|
|
240
|
|
- </el-row>
|
|
241
|
|
-
|
|
242
|
|
- <el-divider content-position="left">其他指标中的安全(仅含SOC/站品控检查扣分)</el-divider>
|
|
243
|
|
- <el-row :gutter="20">
|
|
244
|
|
- <el-col :span="12">
|
|
245
|
|
- <el-form-item label="分值" prop="safetyWithSocScore">
|
|
246
|
|
- <el-input-number v-model="nonCadreForm.safetyWithSocScore" :min="0" :precision="2" style="width: 100%" />
|
|
247
|
|
- </el-form-item>
|
|
248
|
|
- </el-col>
|
|
249
|
|
- <el-col :span="12">
|
|
250
|
|
- <el-form-item label="依据" prop="safetyWithSocBasis">
|
|
251
|
|
- <el-input v-model="nonCadreForm.safetyWithSocBasis" type="textarea" :rows="2" placeholder="请输入依据" />
|
|
252
|
|
- </el-form-item>
|
|
253
|
|
- </el-col>
|
|
254
|
|
- </el-row>
|
|
255
|
|
-
|
|
256
|
|
- <el-divider content-position="left">其他指标中的安全(不含SOC/站品控检查扣分)</el-divider>
|
|
257
|
|
- <el-row :gutter="20">
|
|
258
|
|
- <el-col :span="12">
|
|
259
|
|
- <el-form-item label="分值" prop="safetyWithoutSocScore">
|
|
260
|
|
- <el-input-number v-model="nonCadreForm.safetyWithoutSocScore" :min="0" :precision="2" style="width: 100%" />
|
|
261
|
|
- </el-form-item>
|
|
262
|
|
- </el-col>
|
|
263
|
|
- <el-col :span="12">
|
|
264
|
|
- <el-form-item label="依据" prop="safetyWithoutSocBasis">
|
|
265
|
|
- <el-input v-model="nonCadreForm.safetyWithoutSocBasis" type="textarea" :rows="2" placeholder="请输入依据" />
|
|
266
|
|
- </el-form-item>
|
|
267
|
|
- </el-col>
|
|
268
|
|
- </el-row>
|
|
269
|
|
-
|
|
270
|
|
- <el-divider content-position="left">其他指标中的非安全指标扣分</el-divider>
|
|
271
|
|
- <el-row :gutter="20">
|
|
272
|
|
- <el-col :span="12">
|
|
273
|
|
- <el-form-item label="扣分" prop="nonSafetyDeduction">
|
|
274
|
|
- <el-input-number v-model="nonCadreForm.nonSafetyDeduction" :min="0" :precision="2" style="width: 100%" />
|
|
275
|
|
- </el-form-item>
|
|
276
|
|
- </el-col>
|
|
277
|
|
- <el-col :span="12">
|
|
278
|
|
- <el-form-item label="依据" prop="nonSafetyDeductionBasis">
|
|
279
|
|
- <el-input v-model="nonCadreForm.nonSafetyDeductionBasis" type="textarea" :rows="2" placeholder="请输入依据" />
|
|
280
|
|
- </el-form-item>
|
|
281
|
|
- </el-col>
|
|
282
|
|
- </el-row>
|
|
283
|
|
-
|
|
284
|
|
- <el-divider content-position="left">综合扣分</el-divider>
|
|
285
|
|
- <el-row :gutter="20">
|
|
286
|
|
- <el-col :span="12">
|
|
287
|
|
- <el-form-item label="非核心安全+核心扣分" prop="nonCoreSafetyCoreDeduction">
|
|
288
|
|
- <el-input-number v-model="nonCadreForm.nonCoreSafetyCoreDeduction" :min="0" :precision="2" style="width: 100%" />
|
|
289
|
|
- </el-form-item>
|
|
290
|
|
- </el-col>
|
|
291
|
|
- <el-col :span="12">
|
|
292
|
|
- <el-form-item label="SOC/站品控检查的涉及核心、安全指标扣分" prop="socSafetyCoreDeduction">
|
|
293
|
|
- <el-input-number v-model="nonCadreForm.socSafetyCoreDeduction" :min="0" :precision="2" style="width: 100%" />
|
|
294
|
|
- </el-form-item>
|
|
295
|
|
- </el-col>
|
|
296
|
|
- </el-row>
|
|
297
|
|
-
|
|
298
|
|
- <el-row :gutter="20">
|
|
299
|
|
- <el-col :span="24">
|
|
300
|
|
- <el-form-item label="SOC/站品控检查的涉及核心、安全指标扣分依据" prop="socSafetyCoreDeductionBasis">
|
|
301
|
|
- <el-input v-model="nonCadreForm.socSafetyCoreDeductionBasis" type="textarea" :rows="2" placeholder="请输入依据" />
|
|
302
|
|
- </el-form-item>
|
|
303
|
|
- </el-col>
|
|
304
|
|
- </el-row>
|
|
305
|
|
-
|
|
306
|
|
- <el-divider content-position="left">统计信息</el-divider>
|
|
307
|
|
- <el-row :gutter="20">
|
|
308
|
|
- <el-col :span="8">
|
|
309
|
|
- <el-form-item label="扣分平均值" prop="averageDeduction">
|
|
310
|
|
- <el-input-number v-model="nonCadreForm.averageDeduction" :min="0" :precision="2" style="width: 100%" />
|
|
311
|
|
- </el-form-item>
|
|
312
|
|
- </el-col>
|
|
313
|
|
- <el-col :span="8">
|
|
314
|
|
- <el-form-item label="总分" prop="totalScore">
|
|
315
|
|
- <el-input-number v-model="nonCadreForm.totalScore" :min="0" :precision="2" style="width: 100%" />
|
|
316
|
|
- </el-form-item>
|
|
317
|
|
- </el-col>
|
|
318
|
|
- <el-col :span="8">
|
|
319
|
|
- <el-form-item label="奖励(元)" prop="rewardAmount">
|
|
320
|
|
- <el-input-number v-model="nonCadreForm.rewardAmount" :min="0" :precision="2" style="width: 100%" />
|
|
321
|
|
- </el-form-item>
|
|
322
|
|
- </el-col>
|
|
323
|
186
|
</el-row>
|
|
324
|
187
|
|
|
325
|
188
|
<el-row :gutter="20">
|
|
326
|
189
|
<el-col :span="8">
|
|
327
|
|
- <el-form-item label="扣罚(元)" prop="penaltyAmount">
|
|
328
|
|
- <el-input-number v-model="nonCadreForm.penaltyAmount" :min="0" :precision="2" style="width: 100%" />
|
|
|
190
|
+ <el-form-item label="分管经理" prop="manager">
|
|
|
191
|
+ <el-input v-model="nonCadreForm.manager" placeholder="请输入分管经理" />
|
|
329
|
192
|
</el-form-item>
|
|
330
|
193
|
</el-col>
|
|
331
|
194
|
<el-col :span="8">
|
|
332
|
|
- <el-form-item label="考核结果" prop="assessmentResult">
|
|
333
|
|
- <el-select v-model="nonCadreForm.assessmentResult" placeholder="请选择考核结果" style="width: 100%">
|
|
334
|
|
- <el-option v-for="item in assessmentResultOptions" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
195
|
+ <el-form-item label="大队" prop="brigade">
|
|
|
196
|
+ <el-select v-model="nonCadreForm.brigade" placeholder="请选择大队" style="width: 100%">
|
|
|
197
|
+ <el-option label="一大队" value="1" />
|
|
|
198
|
+ <el-option label="二大队" value="2" />
|
|
|
199
|
+ <el-option label="三大队" value="3" />
|
|
335
|
200
|
</el-select>
|
|
336
|
201
|
</el-form-item>
|
|
337
|
202
|
</el-col>
|
|
338
|
203
|
<el-col :span="8">
|
|
339
|
|
- <el-form-item label="应用方式" prop="applicationMethod">
|
|
340
|
|
- <el-select v-model="nonCadreForm.applicationMethod" placeholder="请选择应用方式" style="width: 100%">
|
|
341
|
|
- <el-option v-for="item in applicationMethodOptions" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
204
|
+ <el-form-item label="考核组" prop="assessmentGroup">
|
|
|
205
|
+ <el-select v-model="nonCadreForm.assessmentGroup" placeholder="请选择考核组" style="width: 100%">
|
|
|
206
|
+ <el-option label="一组" value="1" />
|
|
|
207
|
+ <el-option label="二组" value="2" />
|
|
|
208
|
+ <el-option label="三组" value="3" />
|
|
342
|
209
|
</el-select>
|
|
343
|
210
|
</el-form-item>
|
|
344
|
211
|
</el-col>
|
|
345
|
212
|
</el-row>
|
|
346
|
213
|
|
|
347
|
|
- <el-row :gutter="20">
|
|
348
|
|
- <el-col :span="12">
|
|
349
|
|
- <el-form-item label="奖励明细" prop="rewardDetails">
|
|
350
|
|
- <el-input v-model="nonCadreForm.rewardDetails" type="textarea" :rows="2" placeholder="请输入奖励明细" />
|
|
351
|
|
- </el-form-item>
|
|
352
|
|
- </el-col>
|
|
353
|
|
- <el-col :span="12">
|
|
354
|
|
- <el-form-item label="惩罚明细" prop="penaltyDetails">
|
|
355
|
|
- <el-input v-model="nonCadreForm.penaltyDetails" type="textarea" :rows="2" placeholder="请输入惩罚明细" />
|
|
356
|
|
- </el-form-item>
|
|
357
|
|
- </el-col>
|
|
358
|
|
- </el-row>
|
|
359
|
|
-
|
|
360
|
|
- <el-row :gutter="20">
|
|
361
|
|
- <el-col :span="12">
|
|
362
|
|
- <el-form-item label="考核结果备注" prop="assessmentResultRemark">
|
|
363
|
|
- <el-input v-model="nonCadreForm.assessmentResultRemark" type="textarea" :rows="2" placeholder="请输入考核结果备注" />
|
|
364
|
|
- </el-form-item>
|
|
365
|
|
- </el-col>
|
|
366
|
|
- <el-col :span="12">
|
|
367
|
|
- <el-form-item label="应用方式备注" prop="applicationMethodRemark">
|
|
368
|
|
- <el-input v-model="nonCadreForm.applicationMethodRemark" type="textarea" :rows="2" placeholder="请输入应用方式备注" />
|
|
369
|
|
- </el-form-item>
|
|
370
|
|
- </el-col>
|
|
371
|
|
- </el-row>
|
|
|
214
|
+ <!-- 考核指标区域 -->
|
|
|
215
|
+ <div class="section-title blue">考核指标</div>
|
|
|
216
|
+ <div class="indicators-box">
|
|
|
217
|
+ <!-- 核心指标 -->
|
|
|
218
|
+ <div class="indicator-group">
|
|
|
219
|
+ <div class="indicator-group-title">核心指标</div>
|
|
|
220
|
+ <div class="indicator-item" v-for="(item, index) in nonCadreForm.coreIndicators" :key="index">
|
|
|
221
|
+ <div class="indicator-name">{{ item.name }}</div>
|
|
|
222
|
+ <div class="indicator-value">{{ item.score }}/次</div>
|
|
|
223
|
+ <div class="indicator-count">{{ item.count }}次</div>
|
|
|
224
|
+ <div class="indicator-source">{{ item.source }}</div>
|
|
|
225
|
+ <div class="indicator-total">{{ item.total }}</div>
|
|
|
226
|
+ <div class="indicator-actions">
|
|
|
227
|
+ <el-button type="primary" link icon="Edit" @click="editIndicator('core', index)">编辑</el-button>
|
|
|
228
|
+ <el-button type="danger" link icon="Delete" @click="deleteIndicator('core', index)">删除</el-button>
|
|
|
229
|
+ </div>
|
|
|
230
|
+ </div>
|
|
|
231
|
+ <el-button type="primary" plain icon="Plus" @click="addIndicator('core')" style="margin-top: 10px;">添加核心指标</el-button>
|
|
|
232
|
+ </div>
|
|
|
233
|
+
|
|
|
234
|
+ <!-- 其他指标 -->
|
|
|
235
|
+ <div class="indicator-group" style="margin-top: 20px;">
|
|
|
236
|
+ <div class="indicator-group-title">其他指标</div>
|
|
|
237
|
+ <div class="indicator-item" v-for="(item, index) in nonCadreForm.otherIndicators" :key="index">
|
|
|
238
|
+ <div class="indicator-name">{{ item.name }}</div>
|
|
|
239
|
+ <div class="indicator-value">{{ item.score }}/次</div>
|
|
|
240
|
+ <div class="indicator-count">{{ item.count }}次</div>
|
|
|
241
|
+ <div class="indicator-source">{{ item.source }}</div>
|
|
|
242
|
+ <div class="indicator-total">{{ item.total }}</div>
|
|
|
243
|
+ <div class="indicator-actions">
|
|
|
244
|
+ <el-button type="primary" link icon="Edit" @click="editIndicator('other', index)">编辑</el-button>
|
|
|
245
|
+ <el-button type="danger" link icon="Delete" @click="deleteIndicator('other', index)">删除</el-button>
|
|
|
246
|
+ </div>
|
|
|
247
|
+ </div>
|
|
|
248
|
+ <el-button type="primary" plain icon="Plus" @click="addIndicator('other')" style="margin-top: 10px;">添加其他指标</el-button>
|
|
|
249
|
+ </div>
|
|
|
250
|
+ </div>
|
|
372
|
251
|
|
|
373
|
|
- <el-divider content-position="left">豁免信息</el-divider>
|
|
374
|
|
- <el-row :gutter="20">
|
|
375
|
|
- <el-col :span="12">
|
|
376
|
|
- <el-form-item label="是否豁免" prop="isExempted">
|
|
377
|
|
- <el-switch v-model="nonCadreForm.isExempted" active-text="是" inactive-text="否" />
|
|
378
|
|
- </el-form-item>
|
|
379
|
|
- </el-col>
|
|
380
|
|
- <el-col :span="12">
|
|
381
|
|
- <el-form-item label="是否豁免备注" prop="exemptionRemark">
|
|
382
|
|
- <el-input v-model="nonCadreForm.exemptionRemark" type="textarea" :rows="2" placeholder="请输入豁免备注" />
|
|
383
|
|
- </el-form-item>
|
|
384
|
|
- </el-col>
|
|
385
|
|
- </el-row>
|
|
|
252
|
+ <!-- 第二部分:详细信息 -->
|
|
|
253
|
+ <div style="margin-top: 30px;">
|
|
|
254
|
+ <el-row :gutter="20">
|
|
|
255
|
+ <el-col :span="12">
|
|
|
256
|
+ <el-form-item label="红线指标触发次数">
|
|
|
257
|
+ <el-input v-model="nonCadreForm.redLineTriggerCount" disabled placeholder="不可编辑,红线明细的次数之和" />
|
|
|
258
|
+ </el-form-item>
|
|
|
259
|
+ </el-col>
|
|
|
260
|
+ <el-col :span="12">
|
|
|
261
|
+ <el-form-item label="红线指标依据">
|
|
|
262
|
+ <el-input v-model="nonCadreForm.redLineBasis" type="textarea" :rows="1" disabled placeholder="不可编辑,红线明细的集合" />
|
|
|
263
|
+ </el-form-item>
|
|
|
264
|
+ </el-col>
|
|
|
265
|
+ </el-row>
|
|
|
266
|
+
|
|
|
267
|
+ <el-row :gutter="20">
|
|
|
268
|
+ <el-col :span="12">
|
|
|
269
|
+ <el-form-item label="核心指标分值">
|
|
|
270
|
+ <el-input v-model="nonCadreForm.coreIndicatorScore" disabled placeholder="不可编辑,各个明细的集合" />
|
|
|
271
|
+ </el-form-item>
|
|
|
272
|
+ </el-col>
|
|
|
273
|
+ <el-col :span="12">
|
|
|
274
|
+ <el-form-item label="核心指标依据">
|
|
|
275
|
+ <el-input v-model="nonCadreForm.coreIndicatorBasis" type="textarea" :rows="1" disabled placeholder="不可编辑,各个明细的集合" />
|
|
|
276
|
+ </el-form-item>
|
|
|
277
|
+ </el-col>
|
|
|
278
|
+ </el-row>
|
|
|
279
|
+
|
|
|
280
|
+ <el-row :gutter="20">
|
|
|
281
|
+ <el-col :span="12">
|
|
|
282
|
+ <el-form-item label="其他指标中的安全指标(仅含SOC/站品控检查扣分)分值">
|
|
|
283
|
+ <el-input v-model="nonCadreForm.safetyWithSocScore" disabled placeholder="不可编辑,各个明细的集合" />
|
|
|
284
|
+ </el-form-item>
|
|
|
285
|
+ </el-col>
|
|
|
286
|
+ <el-col :span="12">
|
|
|
287
|
+ <el-form-item label="其他指标中的安全指标(仅含SOC/站品控检查扣分)依据">
|
|
|
288
|
+ <el-input v-model="nonCadreForm.safetyWithSocBasis" type="textarea" :rows="1" disabled placeholder="不可编辑,各个明细的集合" />
|
|
|
289
|
+ </el-form-item>
|
|
|
290
|
+ </el-col>
|
|
|
291
|
+ </el-row>
|
|
|
292
|
+
|
|
|
293
|
+ <el-row :gutter="20">
|
|
|
294
|
+ <el-col :span="12">
|
|
|
295
|
+ <el-form-item label="其他指标中的非安全指标分值">
|
|
|
296
|
+ <el-input v-model="nonCadreForm.nonSafetyIndicatorScore" disabled placeholder="不可编辑,各个明细的集合" />
|
|
|
297
|
+ </el-form-item>
|
|
|
298
|
+ </el-col>
|
|
|
299
|
+ <el-col :span="12">
|
|
|
300
|
+ <el-form-item label="其他指标中的非安全指标依据">
|
|
|
301
|
+ <el-input v-model="nonCadreForm.nonSafetyIndicatorBasis" type="textarea" :rows="1" disabled placeholder="不可编辑,各个明细的集合" />
|
|
|
302
|
+ </el-form-item>
|
|
|
303
|
+ </el-col>
|
|
|
304
|
+ </el-row>
|
|
|
305
|
+
|
|
|
306
|
+ <el-row :gutter="20">
|
|
|
307
|
+ <el-col :span="12">
|
|
|
308
|
+ <el-form-item label="SOC/站品控检查的涉及核心、安全指标扣分">
|
|
|
309
|
+ <el-input v-model="nonCadreForm.socSafetyCoreDeduction" disabled placeholder="不可编辑,各个明细的集合" />
|
|
|
310
|
+ </el-form-item>
|
|
|
311
|
+ </el-col>
|
|
|
312
|
+ <el-col :span="12">
|
|
|
313
|
+ <el-form-item label="SOC/站品控检查的涉及核心、安全指标扣分依据">
|
|
|
314
|
+ <el-input v-model="nonCadreForm.socSafetyCoreDeductionBasis" type="textarea" :rows="1" disabled placeholder="不可编辑,各个明细的集合" />
|
|
|
315
|
+ </el-form-item>
|
|
|
316
|
+ </el-col>
|
|
|
317
|
+ </el-row>
|
|
|
318
|
+
|
|
|
319
|
+ <el-row :gutter="20">
|
|
|
320
|
+ <el-col :span="12">
|
|
|
321
|
+ <el-form-item label="非核心安全+核心扣分">
|
|
|
322
|
+ <el-input v-model="nonCadreForm.nonCoreSafetyCoreDeduction" disabled placeholder="不可编辑,各个明细的集合" />
|
|
|
323
|
+ </el-form-item>
|
|
|
324
|
+ </el-col>
|
|
|
325
|
+ <el-col :span="12">
|
|
|
326
|
+ <el-form-item label="分管员工数量" prop="managedEmployeeCount">
|
|
|
327
|
+ <el-input-number v-model="nonCadreForm.managedEmployeeCount" :min="0" style="width: 100%" />
|
|
|
328
|
+ </el-form-item>
|
|
|
329
|
+ </el-col>
|
|
|
330
|
+ </el-row>
|
|
|
331
|
+
|
|
|
332
|
+ <el-row :gutter="20">
|
|
|
333
|
+ <el-col :span="12">
|
|
|
334
|
+ <el-form-item label="扣分平均值">
|
|
|
335
|
+ <el-input v-model="nonCadreForm.averageDeduction" disabled placeholder="不可编辑,计算" />
|
|
|
336
|
+ </el-form-item>
|
|
|
337
|
+ </el-col>
|
|
|
338
|
+ <el-col :span="12">
|
|
|
339
|
+ <el-form-item label="考核备注" prop="assessmentRemark">
|
|
|
340
|
+ <el-input v-model="nonCadreForm.assessmentRemark" type="textarea" :rows="1" placeholder="请输入考核备注" />
|
|
|
341
|
+ </el-form-item>
|
|
|
342
|
+ </el-col>
|
|
|
343
|
+ </el-row>
|
|
|
344
|
+
|
|
|
345
|
+ <el-row :gutter="20">
|
|
|
346
|
+ <el-col :span="12">
|
|
|
347
|
+ <el-form-item label="奖励明细汇总">
|
|
|
348
|
+ <el-input v-model="nonCadreForm.rewardDetailsSummary" type="textarea" :rows="1" disabled placeholder="不可编辑,各个明细的集合" />
|
|
|
349
|
+ </el-form-item>
|
|
|
350
|
+ </el-col>
|
|
|
351
|
+ <el-col :span="12">
|
|
|
352
|
+ <el-form-item label="惩罚明细汇总">
|
|
|
353
|
+ <el-input v-model="nonCadreForm.penaltyDetailsSummary" type="textarea" :rows="1" disabled placeholder="不可编辑,各个明细的集合" />
|
|
|
354
|
+ </el-form-item>
|
|
|
355
|
+ </el-col>
|
|
|
356
|
+ </el-row>
|
|
|
357
|
+
|
|
|
358
|
+ <el-row :gutter="20">
|
|
|
359
|
+ <el-col :span="8">
|
|
|
360
|
+ <el-form-item label="奖励汇总" prop="rewardAmount">
|
|
|
361
|
+ <div class="input-with-unit">
|
|
|
362
|
+ <el-input-number v-model="nonCadreForm.rewardAmount" :min="0" :precision="2" style="width: calc(100% - 40px)" />
|
|
|
363
|
+ <span class="unit">元</span>
|
|
|
364
|
+ </div>
|
|
|
365
|
+ </el-form-item>
|
|
|
366
|
+ </el-col>
|
|
|
367
|
+ <el-col :span="8">
|
|
|
368
|
+ <el-form-item label="扣罚汇总" prop="penaltyAmount">
|
|
|
369
|
+ <div class="input-with-unit">
|
|
|
370
|
+ <el-input-number v-model="nonCadreForm.penaltyAmount" :min="0" :precision="2" style="width: calc(100% - 40px)" />
|
|
|
371
|
+ <span class="unit">元</span>
|
|
|
372
|
+ </div>
|
|
|
373
|
+ </el-form-item>
|
|
|
374
|
+ </el-col>
|
|
|
375
|
+ <el-col :span="8"></el-col>
|
|
|
376
|
+ </el-row>
|
|
|
377
|
+
|
|
|
378
|
+ <el-row :gutter="20">
|
|
|
379
|
+ <el-col :span="12">
|
|
|
380
|
+ <el-form-item label="是否豁免" prop="isExempted">
|
|
|
381
|
+ <div class="exemption-container">
|
|
|
382
|
+ <el-switch v-model="nonCadreForm.isExempted" active-text="是" inactive-text="否" />
|
|
|
383
|
+ <span class="exemption-hint text-danger" v-if="nonCadreForm.isExempted">无扣分/仅病假/仅事假/仅病假、事假,显示为是,备注说明豁免情况</span>
|
|
|
384
|
+ </div>
|
|
|
385
|
+ </el-form-item>
|
|
|
386
|
+ </el-col>
|
|
|
387
|
+ <el-col :span="12">
|
|
|
388
|
+ <el-form-item label="豁免备注" prop="exemptionRemark">
|
|
|
389
|
+ <el-input v-model="nonCadreForm.exemptionRemark" type="textarea" :rows="1" placeholder="请输入豁免备注" />
|
|
|
390
|
+ </el-form-item>
|
|
|
391
|
+ </el-col>
|
|
|
392
|
+ </el-row>
|
|
|
393
|
+
|
|
|
394
|
+ <el-row :gutter="20">
|
|
|
395
|
+ <el-col :span="12">
|
|
|
396
|
+ <el-form-item label="应用方式" prop="applicationMethod">
|
|
|
397
|
+ <el-select v-model="nonCadreForm.applicationMethod" placeholder="请选择应用方式" style="width: 100%">
|
|
|
398
|
+ <el-option v-for="item in applicationMethodOptions" :key="item.value" :label="item.label" :value="item.value" />
|
|
|
399
|
+ </el-select>
|
|
|
400
|
+ </el-form-item>
|
|
|
401
|
+ </el-col>
|
|
|
402
|
+ <el-col :span="12">
|
|
|
403
|
+ <el-form-item label="应用备注" prop="applicationMethodRemark">
|
|
|
404
|
+ <el-input v-model="nonCadreForm.applicationMethodRemark" type="textarea" :rows="1" placeholder="请输入应用备注" />
|
|
|
405
|
+ </el-form-item>
|
|
|
406
|
+ </el-col>
|
|
|
407
|
+ </el-row>
|
|
|
408
|
+ </div>
|
|
386
|
409
|
</el-form>
|
|
387
|
410
|
|
|
388
|
411
|
<!-- 干部表单 -->
|
|
|
@@ -536,35 +559,38 @@ const nonCadreForm = reactive({
|
|
536
|
559
|
assessmentGroup: '',
|
|
537
|
560
|
teamLeader: '',
|
|
538
|
561
|
supervisor: '',
|
|
|
562
|
+ manager: '',
|
|
539
|
563
|
managedEmployeeCount: 0,
|
|
540
|
564
|
assessmentMonth: '',
|
|
541
|
|
- redLineTriggerCount: 0,
|
|
|
565
|
+ redLineTriggerCount: '',
|
|
542
|
566
|
redLineBasis: '',
|
|
543
|
|
- coreIndicatorScore: 0,
|
|
|
567
|
+ coreIndicatorScore: '',
|
|
544
|
568
|
coreIndicatorBasis: '',
|
|
545
|
|
- otherIndicatorScore: 0,
|
|
546
|
|
- otherIndicatorBasis: '',
|
|
547
|
|
- safetyWithSocScore: 0,
|
|
|
569
|
+ safetyWithSocScore: '',
|
|
548
|
570
|
safetyWithSocBasis: '',
|
|
549
|
|
- safetyWithoutSocScore: 0,
|
|
550
|
|
- safetyWithoutSocBasis: '',
|
|
551
|
|
- nonSafetyDeduction: 0,
|
|
552
|
|
- nonSafetyDeductionBasis: '',
|
|
553
|
|
- nonCoreSafetyCoreDeduction: 0,
|
|
554
|
|
- socSafetyCoreDeduction: 0,
|
|
|
571
|
+ nonSafetyIndicatorScore: '',
|
|
|
572
|
+ nonSafetyIndicatorBasis: '',
|
|
|
573
|
+ nonCoreSafetyCoreDeduction: '',
|
|
|
574
|
+ socSafetyCoreDeduction: '',
|
|
555
|
575
|
socSafetyCoreDeductionBasis: '',
|
|
556
|
|
- averageDeduction: 0,
|
|
|
576
|
+ averageDeduction: '',
|
|
557
|
577
|
totalScore: 0,
|
|
558
|
578
|
rewardAmount: 0,
|
|
559
|
579
|
penaltyAmount: 0,
|
|
560
|
580
|
assessmentResult: '',
|
|
561
|
581
|
applicationMethod: '',
|
|
562
|
|
- rewardDetails: '',
|
|
563
|
|
- penaltyDetails: '',
|
|
564
|
|
- assessmentResultRemark: '',
|
|
|
582
|
+ rewardDetailsSummary: '',
|
|
|
583
|
+ penaltyDetailsSummary: '',
|
|
|
584
|
+ assessmentRemark: '',
|
|
565
|
585
|
applicationMethodRemark: '',
|
|
566
|
586
|
isExempted: false,
|
|
567
|
|
- exemptionRemark: ''
|
|
|
587
|
+ exemptionRemark: '',
|
|
|
588
|
+ coreIndicators: [
|
|
|
589
|
+ { name: '核心指标细项', score: -3, count: 3, source: 'SOC', total: -9 }
|
|
|
590
|
+ ],
|
|
|
591
|
+ otherIndicators: [
|
|
|
592
|
+ { name: '其他指标细项', score: -3, count: 1, source: '品控', total: -3 }
|
|
|
593
|
+ ]
|
|
568
|
594
|
})
|
|
569
|
595
|
|
|
570
|
596
|
// 干部表单数据
|
|
|
@@ -783,6 +809,43 @@ const generateMonthlyAssessment = async () => {
|
|
783
|
809
|
}
|
|
784
|
810
|
}
|
|
785
|
811
|
|
|
|
812
|
+// 获取考核结果文本
|
|
|
813
|
+const getResultText = (value) => {
|
|
|
814
|
+ const map = {
|
|
|
815
|
+ 'excellent': '优秀',
|
|
|
816
|
+ 'good': '良好',
|
|
|
817
|
+ 'qualified': '合格',
|
|
|
818
|
+ 'unqualified': '不称职'
|
|
|
819
|
+ }
|
|
|
820
|
+ return map[value] || ''
|
|
|
821
|
+}
|
|
|
822
|
+
|
|
|
823
|
+// 添加指标
|
|
|
824
|
+const addIndicator = (type) => {
|
|
|
825
|
+ ElMessage.success('添加功能开发中')
|
|
|
826
|
+}
|
|
|
827
|
+
|
|
|
828
|
+// 编辑指标
|
|
|
829
|
+const editIndicator = (type, index) => {
|
|
|
830
|
+ ElMessage.success('编辑功能开发中')
|
|
|
831
|
+}
|
|
|
832
|
+
|
|
|
833
|
+// 删除指标
|
|
|
834
|
+const deleteIndicator = (type, index) => {
|
|
|
835
|
+ ElMessageBox.confirm('确认删除该指标吗?', '提示', {
|
|
|
836
|
+ confirmButtonText: '确定',
|
|
|
837
|
+ cancelButtonText: '取消',
|
|
|
838
|
+ type: 'warning'
|
|
|
839
|
+ }).then(() => {
|
|
|
840
|
+ if (type === 'core') {
|
|
|
841
|
+ nonCadreForm.coreIndicators.splice(index, 1)
|
|
|
842
|
+ } else {
|
|
|
843
|
+ nonCadreForm.otherIndicators.splice(index, 1)
|
|
|
844
|
+ }
|
|
|
845
|
+ ElMessage.success('删除成功')
|
|
|
846
|
+ }).catch(() => {})
|
|
|
847
|
+}
|
|
|
848
|
+
|
|
786
|
849
|
// 监听Tab切换
|
|
787
|
850
|
const handleTabChange = () => {
|
|
788
|
851
|
queryParams.pageNum = 1
|
|
|
@@ -844,4 +907,109 @@ onMounted(() => {
|
|
844
|
907
|
:deep(.el-form-item__label) {
|
|
845
|
908
|
font-weight: 500;
|
|
846
|
909
|
}
|
|
|
910
|
+
|
|
|
911
|
+/* 新增样式 */
|
|
|
912
|
+.score-display {
|
|
|
913
|
+ display: flex;
|
|
|
914
|
+ align-items: center;
|
|
|
915
|
+ gap: 10px;
|
|
|
916
|
+ height: 32px;
|
|
|
917
|
+ line-height: 32px;
|
|
|
918
|
+ padding: 0 10px;
|
|
|
919
|
+}
|
|
|
920
|
+
|
|
|
921
|
+.score-label, .result-label {
|
|
|
922
|
+ font-weight: bold;
|
|
|
923
|
+ font-size: 16px;
|
|
|
924
|
+}
|
|
|
925
|
+
|
|
|
926
|
+.score-value {
|
|
|
927
|
+ font-size: 20px;
|
|
|
928
|
+ font-weight: bold;
|
|
|
929
|
+}
|
|
|
930
|
+
|
|
|
931
|
+.result-value {
|
|
|
932
|
+ font-size: 20px;
|
|
|
933
|
+ font-weight: bold;
|
|
|
934
|
+}
|
|
|
935
|
+
|
|
|
936
|
+.text-danger {
|
|
|
937
|
+ color: #f56c6c;
|
|
|
938
|
+}
|
|
|
939
|
+
|
|
|
940
|
+.section-title {
|
|
|
941
|
+ font-size: 22px;
|
|
|
942
|
+ font-weight: bold;
|
|
|
943
|
+ margin: 25px 0 15px 0;
|
|
|
944
|
+ padding-left: 5px;
|
|
|
945
|
+}
|
|
|
946
|
+
|
|
|
947
|
+.section-title.blue {
|
|
|
948
|
+ color: #409eff;
|
|
|
949
|
+ border-left: 4px solid #409eff;
|
|
|
950
|
+}
|
|
|
951
|
+
|
|
|
952
|
+.indicators-box {
|
|
|
953
|
+ border: 1px solid #dcdfe6;
|
|
|
954
|
+ border-radius: 4px;
|
|
|
955
|
+ padding: 15px;
|
|
|
956
|
+}
|
|
|
957
|
+
|
|
|
958
|
+.indicator-group {
|
|
|
959
|
+ padding: 10px 0;
|
|
|
960
|
+}
|
|
|
961
|
+
|
|
|
962
|
+.indicator-group-title {
|
|
|
963
|
+ font-size: 18px;
|
|
|
964
|
+ font-weight: bold;
|
|
|
965
|
+ color: #303133;
|
|
|
966
|
+ margin-bottom: 15px;
|
|
|
967
|
+}
|
|
|
968
|
+
|
|
|
969
|
+.indicator-item {
|
|
|
970
|
+ display: flex;
|
|
|
971
|
+ align-items: center;
|
|
|
972
|
+ gap: 10px;
|
|
|
973
|
+ margin-bottom: 10px;
|
|
|
974
|
+ padding: 10px;
|
|
|
975
|
+ background: #f5f7fa;
|
|
|
976
|
+ border-radius: 4px;
|
|
|
977
|
+}
|
|
|
978
|
+
|
|
|
979
|
+.indicator-name {
|
|
|
980
|
+ flex: 2;
|
|
|
981
|
+ font-size: 16px;
|
|
|
982
|
+}
|
|
|
983
|
+
|
|
|
984
|
+.indicator-value, .indicator-count, .indicator-source, .indicator-total {
|
|
|
985
|
+ flex: 1;
|
|
|
986
|
+ font-size: 16px;
|
|
|
987
|
+ text-align: center;
|
|
|
988
|
+}
|
|
|
989
|
+
|
|
|
990
|
+.indicator-actions {
|
|
|
991
|
+ display: flex;
|
|
|
992
|
+ gap: 5px;
|
|
|
993
|
+}
|
|
|
994
|
+
|
|
|
995
|
+.input-with-unit {
|
|
|
996
|
+ display: flex;
|
|
|
997
|
+ align-items: center;
|
|
|
998
|
+ gap: 10px;
|
|
|
999
|
+}
|
|
|
1000
|
+
|
|
|
1001
|
+.unit {
|
|
|
1002
|
+ font-size: 14px;
|
|
|
1003
|
+ color: #606266;
|
|
|
1004
|
+}
|
|
|
1005
|
+
|
|
|
1006
|
+.exemption-container {
|
|
|
1007
|
+ display: flex;
|
|
|
1008
|
+ align-items: center;
|
|
|
1009
|
+ gap: 15px;
|
|
|
1010
|
+}
|
|
|
1011
|
+
|
|
|
1012
|
+.exemption-hint {
|
|
|
1013
|
+ font-size: 12px;
|
|
|
1014
|
+}
|
|
847
|
1015
|
</style>
|