Browse Source

feat(qualificationSummary): add review record management function

1. 调整弹窗宽度从600px到700px适配新表单内容
2. 移除冗余的个人基础信息表单项
3. 新增复审明细表格支持增删复审记录
4. 同步更新表单初始化、重置和编辑回显逻辑
5. 添加表单栅格布局优化页面排版
huoyi 3 weeks ago
parent
commit
fb43424abe
1 changed files with 70 additions and 32 deletions
  1. 70 32
      src/views/ledgerManage/qualificationSummary/index.vue

+ 70 - 32
src/views/ledgerManage/qualificationSummary/index.vue

@@ -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>