|
|
@@ -77,26 +77,11 @@
|
|
77
|
77
|
@pagination="getList" />
|
|
78
|
78
|
|
|
79
|
79
|
<!-- 添加或修改证书信息对话框 -->
|
|
80
|
|
- <el-dialog :title="title" v-model="open" width="600px" append-to-body destroy-on-close>
|
|
81
|
|
- <el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
|
|
|
80
|
+ <el-dialog :title="title" v-model="open" width="700px" append-to-body destroy-on-close>
|
|
|
81
|
+ <el-form ref="formRef" :model="form" :rules="rules" label-width="100px" >
|
|
82
|
82
|
<el-form-item label="姓名" prop="userId">
|
|
83
|
83
|
<UserSelect v-model="form.userId" placeholder="请选择姓名" style="width: 100%" />
|
|
84
|
84
|
</el-form-item>
|
|
85
|
|
- <el-form-item label="单位" prop="unitName">
|
|
86
|
|
- <el-input v-model="form.unitName" placeholder="请输入单位" />
|
|
87
|
|
- </el-form-item>
|
|
88
|
|
- <el-form-item label="性别" prop="gender">
|
|
89
|
|
- <el-select v-model="form.gender" placeholder="请选择性别" clearable style="width: 100%">
|
|
90
|
|
- <el-option label="男" value="0" />
|
|
91
|
|
- <el-option label="女" value="1" />
|
|
92
|
|
- </el-select>
|
|
93
|
|
- </el-form-item>
|
|
94
|
|
- <el-form-item label="出生日期" prop="birthDate">
|
|
95
|
|
- <el-date-picker v-model="form.birthDate" value-format="YYYY-MM-DD" type="date" placeholder="请选择出生日期" style="width: 100%" />
|
|
96
|
|
- </el-form-item>
|
|
97
|
|
- <el-form-item label="身份证号" prop="idCard">
|
|
98
|
|
- <el-input v-model="form.idCard" placeholder="请输入身份证号" />
|
|
99
|
|
- </el-form-item>
|
|
100
|
85
|
<el-form-item label="证书等级" prop="certLevel">
|
|
101
|
86
|
<el-select v-model="form.certLevel" placeholder="请选择证书等级" clearable style="width: 100%">
|
|
102
|
87
|
<el-option v-for="dict in sys_user_qualification_level" :key="dict.value" :label="dict.label" :value="dict.value" />
|
|
|
@@ -117,9 +102,6 @@
|
|
117
|
102
|
<el-form-item label="评定成绩" prop="evalScore">
|
|
118
|
103
|
<el-input v-model="form.evalScore" placeholder="请输入评定成绩" />
|
|
119
|
104
|
</el-form-item>
|
|
120
|
|
- <el-form-item label="用工形式" prop="employmentType">
|
|
121
|
|
- <el-input v-model="form.employmentType" placeholder="请输入用工形式" />
|
|
122
|
|
- </el-form-item>
|
|
123
|
105
|
<el-form-item label="服务期(月)" prop="serviceMonths">
|
|
124
|
106
|
<el-input-number v-model="form.serviceMonths" :min="0" placeholder="请输入服务期(月)" style="width: 100%" />
|
|
125
|
107
|
</el-form-item>
|
|
|
@@ -132,6 +114,31 @@
|
|
132
|
114
|
<el-form-item label="备注" prop="remark">
|
|
133
|
115
|
<el-input v-model="form.remark" type="textarea" placeholder="请输入备注" />
|
|
134
|
116
|
</el-form-item>
|
|
|
117
|
+ <el-form-item label="复审明细" prop="reviewRecords">
|
|
|
118
|
+ <div style="width: 100%">
|
|
|
119
|
+ <el-button type="primary" icon="Plus" @click="handleAddReview" style="margin-bottom: 10px">
|
|
|
120
|
+ 新增明细
|
|
|
121
|
+ </el-button>
|
|
|
122
|
+ <el-table :data="form.reviewRecords || []" border fit style="width: 100%">
|
|
|
123
|
+ <el-table-column min-width="150">
|
|
|
124
|
+ <template #default="scope">
|
|
|
125
|
+ {{ scope.row.reviewSeq === 1 ? '第一次复审时间' : scope.row.reviewSeq === 2 ? '第二次复审时间' : scope.row.reviewSeq === 3 ? '第三次复审时间' : `第${scope.row.reviewSeq}次复审时间` }}
|
|
|
126
|
+ </template>
|
|
|
127
|
+ </el-table-column>
|
|
|
128
|
+ <el-table-column label="复审时间" min-width="200">
|
|
|
129
|
+ <template #default="scope">
|
|
|
130
|
+ <el-date-picker v-model="scope.row.reviewTime" value-format="YYYY-MM-DD" type="date"
|
|
|
131
|
+ placeholder="选择日期" style="width: 100%" />
|
|
|
132
|
+ </template>
|
|
|
133
|
+ </el-table-column>
|
|
|
134
|
+ <el-table-column label="操作" width="80" align="center">
|
|
|
135
|
+ <template #default="scope">
|
|
|
136
|
+ <el-button type="danger" link icon="Delete" @click="handleDeleteReview(scope.$index)" />
|
|
|
137
|
+ </template>
|
|
|
138
|
+ </el-table-column>
|
|
|
139
|
+ </el-table>
|
|
|
140
|
+ </div>
|
|
|
141
|
+ </el-form-item>
|
|
135
|
142
|
</el-form>
|
|
136
|
143
|
<template #footer>
|
|
137
|
144
|
<div class="dialog-footer">
|
|
|
@@ -212,21 +219,17 @@ const open = ref(false)
|
|
212
|
219
|
const form = ref({
|
|
213
|
220
|
id: undefined,
|
|
214
|
221
|
userId: '',
|
|
215
|
|
- unitName: '',
|
|
216
|
|
- gender: '',
|
|
217
|
|
- birthDate: '',
|
|
218
|
|
- idCard: '',
|
|
219
|
222
|
certLevel: '',
|
|
220
|
223
|
issueDate: '',
|
|
221
|
224
|
certNo: '',
|
|
222
|
225
|
theoryScore: '',
|
|
223
|
226
|
practiceScore: '',
|
|
224
|
227
|
evalScore: '',
|
|
225
|
|
- employmentType: '',
|
|
226
|
228
|
serviceMonths: undefined,
|
|
227
|
229
|
expiryDate: '',
|
|
228
|
230
|
status: '',
|
|
229
|
|
- remark: ''
|
|
|
231
|
+ remark: '',
|
|
|
232
|
+ reviewRecords: []
|
|
230
|
233
|
})
|
|
231
|
234
|
|
|
232
|
235
|
const rules = reactive({
|
|
|
@@ -274,6 +277,9 @@ const handleUpdate = async (row) => {
|
|
274
|
277
|
reset()
|
|
275
|
278
|
const res = await getQualificationSummary(row.id)
|
|
276
|
279
|
form.value = res.data || {}
|
|
|
280
|
+ if (!form.value.reviewRecords) {
|
|
|
281
|
+ form.value.reviewRecords = []
|
|
|
282
|
+ }
|
|
277
|
283
|
open.value = true
|
|
278
|
284
|
title.value = '修改证书信息'
|
|
279
|
285
|
}
|
|
|
@@ -287,6 +293,24 @@ const handleDelete = (row) => {
|
|
287
|
293
|
}).catch(() => { })
|
|
288
|
294
|
}
|
|
289
|
295
|
|
|
|
296
|
+const handleAddReview = () => {
|
|
|
297
|
+ if (!form.value.reviewRecords) {
|
|
|
298
|
+ form.value.reviewRecords = []
|
|
|
299
|
+ }
|
|
|
300
|
+ const nextSeq = form.value.reviewRecords.length + 1
|
|
|
301
|
+ form.value.reviewRecords.push({
|
|
|
302
|
+ reviewSeq: nextSeq,
|
|
|
303
|
+ reviewTime: ''
|
|
|
304
|
+ })
|
|
|
305
|
+}
|
|
|
306
|
+
|
|
|
307
|
+const handleDeleteReview = (index) => {
|
|
|
308
|
+ form.value.reviewRecords.splice(index, 1)
|
|
|
309
|
+ form.value.reviewRecords.forEach((item, i) => {
|
|
|
310
|
+ item.reviewSeq = i + 1
|
|
|
311
|
+ })
|
|
|
312
|
+}
|
|
|
313
|
+
|
|
290
|
314
|
const submitForm = async () => {
|
|
291
|
315
|
const valid = await formRef.value.validate().catch(() => false)
|
|
292
|
316
|
if (!valid) return
|
|
|
@@ -316,21 +340,17 @@ const reset = () => {
|
|
316
|
340
|
form.value = {
|
|
317
|
341
|
id: undefined,
|
|
318
|
342
|
userId: '',
|
|
319
|
|
- unitName: '',
|
|
320
|
|
- gender: '',
|
|
321
|
|
- birthDate: '',
|
|
322
|
|
- idCard: '',
|
|
323
|
343
|
certLevel: '',
|
|
324
|
344
|
issueDate: '',
|
|
325
|
345
|
certNo: '',
|
|
326
|
346
|
theoryScore: '',
|
|
327
|
347
|
practiceScore: '',
|
|
328
|
348
|
evalScore: '',
|
|
329
|
|
- employmentType: '',
|
|
330
|
349
|
serviceMonths: undefined,
|
|
331
|
350
|
expiryDate: '',
|
|
332
|
351
|
status: '',
|
|
333
|
|
- remark: ''
|
|
|
352
|
+ remark: '',
|
|
|
353
|
+ reviewRecords: []
|
|
334
|
354
|
}
|
|
335
|
355
|
formRef.value && formRef.value.resetFields()
|
|
336
|
356
|
}
|
|
|
@@ -398,4 +418,22 @@ onMounted(() => {
|
|
398
|
418
|
.operation-container {
|
|
399
|
419
|
margin-top: 10px;
|
|
400
|
420
|
}
|
|
|
421
|
+
|
|
|
422
|
+.form-grid {
|
|
|
423
|
+ display: grid;
|
|
|
424
|
+ grid-template-columns: repeat(2, 1fr);
|
|
|
425
|
+ gap: 10px;
|
|
|
426
|
+}
|
|
|
427
|
+
|
|
|
428
|
+.form-grid :deep(.el-form-item) {
|
|
|
429
|
+ margin-bottom: 15px;
|
|
|
430
|
+}
|
|
|
431
|
+
|
|
|
432
|
+.form-grid :deep(.el-form-item:nth-child(n+15)) {
|
|
|
433
|
+ grid-column: span 2;
|
|
|
434
|
+}
|
|
|
435
|
+
|
|
|
436
|
+.form-grid :deep(.el-form-item:nth-child(16)) {
|
|
|
437
|
+ grid-column: span 2;
|
|
|
438
|
+}
|
|
401
|
439
|
</style>
|