Pārlūkot izejas kodu

新增职称信息和评审记录修改

qyx 1 nedēļu atpakaļ
vecāks
revīzija
abc79e2dcb

+ 1
- 1
oa-ui/src/views/flowable/form/oa/titlesForm.vue Parādīt failu

@@ -52,7 +52,7 @@
52 52
             </el-form-item>
53 53
 
54 54
             <!-- 申请时间 -->
55
-            <el-form-item label="申请时间" prop="userId">
55
+            <el-form-item label="申请时间" prop="applyTime">
56 56
               {{ form.applyTime }}
57 57
             </el-form-item>
58 58
 

+ 489
- 3
oa-ui/src/views/oa/titles/info.vue Parādīt failu

@@ -5,15 +5,501 @@
5 5
  * @LastEditTime: 2025-08-15 16:13:39
6 6
 -->
7 7
 <template>
8
-  <div>
8
+  <div class="app-container">
9
+    <el-form
10
+      :model="queryParams"
11
+      ref="queryForm"
12
+      size="small"
13
+      :inline="true"
14
+      v-show="showSearch"
15
+      label-width="68px"
16
+    >
17
+      <el-form-item label="职称类型" prop="type">
18
+        <el-select
19
+          v-model="queryParams.type"
20
+          clearable
21
+          placeholder="请选择职称类型"
22
+          @change="handleQuery"
23
+        >
24
+          <el-option label="工程技术类" value="工程技术类"></el-option>
25
+          <el-option label="工程经济类" value="工程经济类"></el-option>
26
+          <el-option label="其他" value="其他"></el-option>
27
+        </el-select>
28
+      </el-form-item>
29
+      <el-form-item label="职称级别" prop="level">
30
+        <el-select
31
+          v-model="queryParams.level"
32
+          clearable
33
+          placeholder="请选择职称级别"
34
+          @change="handleQuery"
35
+        >
36
+          <el-option label="正高级" value="正高级"></el-option>
37
+          <el-option label="副高级" value="副高级"></el-option>
38
+          <el-option label="高级" value="高级"></el-option>
39
+          <el-option label="中级" value="中级"></el-option>
40
+          <el-option label="初级" value="初级"></el-option>
41
+          <el-option label="员级" value="员级"></el-option>
42
+        </el-select>
43
+      </el-form-item>
44
+      <el-form-item label="姓名" prop="userId">
45
+        <el-select
46
+          v-model="queryParams.userId"
47
+          filterable
48
+          clearable
49
+          @change="handleQuery"
50
+        >
51
+          <el-option
52
+            v-for="item in $store.state.user.userList"
53
+            :key="item.userId"
54
+            :label="item.nickName"
55
+            :value="item.userId"
56
+          >
57
+          </el-option>
58
+        </el-select>
59
+      </el-form-item>
60
+      <el-form-item>
61
+        <el-button
62
+          type="primary"
63
+          icon="el-icon-search"
64
+          size="mini"
65
+          @click="handleQuery"
66
+          >搜索</el-button
67
+        >
68
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
69
+          >重置</el-button
70
+        >
71
+      </el-form-item>
72
+    </el-form>
73
+
74
+    <el-row :gutter="10" class="mb8">
75
+      <el-col :span="1.5">
76
+        <el-button
77
+          type="primary"
78
+          plain
79
+          icon="el-icon-plus"
80
+          size="mini"
81
+          @click="handleAdd"
82
+          v-hasPermi="['oa:title:add']"
83
+          >新增</el-button
84
+        >
85
+      </el-col>
86
+      <el-col :span="1.5">
87
+        <el-button
88
+          type="success"
89
+          plain
90
+          icon="el-icon-edit"
91
+          size="mini"
92
+          :disabled="single"
93
+          @click="handleUpdate"
94
+          v-hasPermi="['oa:title:edit']"
95
+          >修改</el-button
96
+        >
97
+      </el-col>
98
+      <el-col :span="1.5">
99
+        <el-button
100
+          type="danger"
101
+          plain
102
+          icon="el-icon-delete"
103
+          size="mini"
104
+          :disabled="multiple"
105
+          @click="handleDelete"
106
+          v-hasPermi="['oa:title:remove']"
107
+          >删除</el-button
108
+        >
109
+      </el-col>
110
+      <el-col :span="1.5">
111
+        <el-button
112
+          type="warning"
113
+          plain
114
+          icon="el-icon-download"
115
+          size="mini"
116
+          @click="handleExport"
117
+          v-hasPermi="['oa:title:export']"
118
+          >导出</el-button
119
+        >
120
+      </el-col>
121
+      <right-toolbar
122
+        :showSearch.sync="showSearch"
123
+        @queryTable="getList"
124
+      ></right-toolbar>
125
+    </el-row>
126
+
127
+    <el-table
128
+      v-loading="loading"
129
+      :data="evalList"
130
+      @selection-change="handleSelectionChange"
131
+    >
132
+      <el-table-column type="selection" width="55" align="center" />
133
+      <el-table-column label="姓名" align="center" prop="userId">
134
+        <template slot-scope="scope">
135
+          {{ getUserName(scope.row.userId) }}
136
+        </template>
137
+      </el-table-column>
138
+      <el-table-column label="职称类型" align="center" prop="type" />
139
+      <el-table-column label="职称级别" align="center" prop="level" />
140
+      <el-table-column label="职称专业名称" align="center" prop="titleProfession" />
141
+      <el-table-column label="评审单位" align="center" prop="institude" />
142
+      <el-table-column label="证书取得时间" align="center" prop="obtainTime" width="180" >
143
+        <template slot-scope="scope">
144
+          <span>{{ parseTime(scope.row.obtainTime, "{y}-{m}-{d}") }}</span>
145
+        </template>
146
+      </el-table-column>
147
+      
148
+      <el-table-column label="文件" align="center" prop="publicityFile" >
149
+      <template slot-scope="scope">
150
+        <el-link
151
+            type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + scope.row.publicityFile}`)">
152
+            {{ getFileName(scope.row.publicityFile) }}
153
+          </el-link>
154
+          <br>
155
+          <el-link
156
+            class="ml20"
157
+            type="warning"
158
+            :href="`${baseUrl}${'/profile/upload' + scope.row.publicityFile}`"
159
+            :underline="false"
160
+            target="_blank">
161
+          </el-link>
162
+          <el-link
163
+            type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + scope.row.scanFile}`)">
164
+            {{ getFileName(scope.row.scanFile) }}
165
+          </el-link>
166
+          <el-link
167
+            class="ml20"
168
+            type="warning"
169
+            :href="`${baseUrl}${'/profile/upload' + scope.row.scanFile}`"
170
+            :underline="false"
171
+            target="_blank">
172
+          </el-link>
173
+      </template>
174
+      </el-table-column>
175
+      <el-table-column
176
+        label="操作"
177
+        align="center"
178
+        class-name="small-padding fixed-width"
179
+      >
180
+        <template slot-scope="scope">
181
+          <el-button
182
+            size="mini"
183
+            type="text"
184
+            icon="el-icon-edit"
185
+            @click="handleUpdate(scope.row)"
186
+            v-hasPermi="['oa:title:edit']"
187
+            >修改</el-button
188
+          >
189
+          <el-button
190
+            size="mini"
191
+            type="text"
192
+            icon="el-icon-delete"
193
+            @click="handleDelete(scope.row)"
194
+            v-hasPermi="['oa:title:remove']"
195
+            >删除</el-button
196
+          >
197
+        </template>
198
+      </el-table-column>
199
+    </el-table>
200
+
201
+    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
202
+      @pagination="getList" />
203
+
204
+     <!-- 添加或修改职称信息对话框 -->
205
+    <el-dialog :title="title" :visible.sync="open" width="60%" append-to-body>
206
+      <el-form ref="form" :model="form" :rules="formRules" label-width="120px">
207
+        <el-form-item label="姓名" prop="userId">
208
+          <el-select v-model="form.userId" filterable clearable >
209
+            <el-option
210
+              v-for="item in $store.state.user.userList"
211
+              :key="item.userId"
212
+              :label="item.nickName"
213
+              :value="item.userId">
214
+            </el-option>
215
+          </el-select>
216
+        </el-form-item>
217
+        <el-form-item label="职称类型" prop="type">
218
+              <el-select v-model="form.type" placeholder="请选择职称类型" style="width: 100%">
219
+                <el-option label="工程技术类" value="工程技术类" />
220
+                <el-option label="工程经济类" value="工程经济类" />
221
+                <el-option label="其他" value="其他" />
222
+              </el-select>
223
+            </el-form-item>
224
+         <el-form-item label="职称级别" prop="level">
225
+           <el-select v-model="form.level" placeholder="请选择职称级别" style="width: 100%">
226
+                <el-option label="员级" value="员级" />
227
+                <el-option label="助理级" value="助理级" />
228
+                <el-option label="中级" value="中级" />
229
+                <el-option label="副高级" value="副高级" />
230
+                <el-option label="正高级" value="正高级" />
231
+              </el-select>
232
+        </el-form-item>
233
+        <el-form-item label="职称专业名称" prop="titleProfession">
234
+           <el-input v-model="form.titleProfession" placeholder="请输入职称专业名称"  maxlength="50" show-word-limit/>
235
+        </el-form-item>
236
+        <el-form-item label="评审单位" prop="institude">
237
+           <el-select v-model="form.institude" placeholder="请选择评审单位" style="width: 100%">
238
+                <el-option label="中国电建" value="中国电建" />
239
+                <el-option label="成都人社" value="成都人社" />
240
+                <el-option label="四川省测绘局" value="四川省测绘局" />
241
+                <el-option label="四川省建设厅" value="四川省建设厅" />
242
+                <el-option label="其他" value="其他" />
243
+              </el-select>
244
+        </el-form-item>
245
+        
246
+        <el-form-item label="公示红头文件" prop="publicityFile">
247
+          <file-upload v-model="form.publicityFile" :fileType="['pdf']"/>
248
+        </el-form-item>
249
+        <el-form-item label="证书扫描件" prop="scanFile">
250
+          <file-upload v-model="form.scanFile" :fileType="['pdf']"/>
251
+        </el-form-item>
252
+        <el-form-item label="证书取得时间" prop="obtainTime">
253
+          <el-date-picker
254
+            clearable
255
+            v-model="form.obtainTime"
256
+            type="date"
257
+            value-format="yyyy-MM-dd"
258
+            placeholder="请选择证书取得时间"
259
+          >
260
+          </el-date-picker>
261
+        </el-form-item>
262
+      </el-form>
263
+      <div slot="footer" class="dialog-footer">
264
+        <el-button type="primary" @click="submitForm">确 定</el-button>
265
+        <el-button @click="cancel">取 消</el-button>
266
+      </div>
267
+    </el-dialog>
9 268
 
10 269
   </div>
11 270
 </template>
12 271
 
13 272
 <script>
14
-  export default {
15
-    
273
+  import {
274
+  listEval,
275
+  getEval,
276
+  delEval,
277
+  addEval,
278
+  updateEval,
279
+} from "@/api/oa/titles/titles";
280
+import {Snowflake} from"@/utils/snowFlake.js";
281
+
282
+export default {
283
+  name: "Eval",
284
+  data() {
285
+    return {
286
+      baseUrl: process.env.VUE_APP_BASE_API,
287
+      // 遮罩层
288
+      loading: true,
289
+      // 选中数组
290
+      ids: [],
291
+      // 非单个禁用
292
+      single: true,
293
+      // 非多个禁用
294
+      multiple: true,
295
+      // 显示搜索条件
296
+      showSearch: true,
297
+      // 总条数
298
+      total: 0,
299
+      // 职称信息表格数据
300
+      evalList: [],
301
+      // 弹出层标题
302
+      title: "",
303
+      // 是否显示弹出层
304
+      open: false,
305
+      // 查询参数
306
+      queryParams: {
307
+        pageNum: 1,
308
+        pageSize: 10,
309
+        userId: null,
310
+        institude: null,
311
+        type: null,
312
+        level: null,
313
+        titleProfession: null,
314
+        sheet: null,
315
+        sheetStamp: null,
316
+        material: null,
317
+        isApproved: null,
318
+        publicityFile: null,
319
+        scanFile: null,
320
+        obtainTime: null,
321
+        applyTime: null,
322
+        titleUserId: null,
323
+        titleTime: null,
324
+        titleComment: null,
325
+        materialUploadTime: null,
326
+        confirmer: null,
327
+        confirmTime: null,
328
+        confirmStatus: null,
329
+      },
330
+      // 表单参数
331
+      form: {},
332
+      // 表单校验
333
+      rules: {},
334
+    };
335
+  },
336
+  created() {
337
+    this.getList();
338
+  },
339
+  computed:{
340
+    formRules() {
341
+      return {
342
+        userId: [
343
+          { required: true, message: '请选择申请人', trigger: 'change' }
344
+        ],
345
+        institude: [
346
+          { required: true, message: '请选择评审单位', trigger: 'change' }
347
+        ],
348
+        type: [
349
+          { required: true, message: '请选择职称类型', trigger: 'change' }
350
+        ],
351
+        level: [
352
+          { required: true, message: '请选择职称级别', trigger: 'change' }
353
+        ],
354
+        titleProfession: [
355
+          { required: true, message: '请输入职称专业名称', trigger: 'blur' },
356
+          { min: 2, max: 50, message: '长度在 2 到 50 个字符', trigger: 'blur' }
357
+        ],
358
+        sheet: [
359
+          { required: true, message: '请上传评审表(盖章前)', trigger: 'change' }
360
+        ],
361
+        sheetStamp: [
362
+          { required: true, message: '请上传评审表(盖章后)', trigger: 'change' }
363
+        ],
364
+        material: [
365
+          { required: true, message: '请上传其他材料', trigger: 'change' }
366
+        ],
367
+        publicityFile: [
368
+          { required: () => this.form.isApproved == '1', message: '请上传公示红头文件', trigger: 'change' }
369
+        ],
370
+        scanFile: [
371
+          { required: () => this.form.isApproved == '1', message: '请上传证书扫描件', trigger: 'change' }
372
+        ],
373
+        obtainTime: [
374
+          { required: () => this.form.isApproved == '1', message: '请选择证书取得时间', trigger: 'change'}
375
+        ]
376
+      }
16 377
   }
378
+  },
379
+  methods: {
380
+    /** 查询职称信息列表 */
381
+    getList() {
382
+      this.loading = true;
383
+      listEval(this.queryParams).then((response) => {
384
+        this.evalList = response.rows.filter(item => item.isApproved === "1");
385
+        this.total = response.total;
386
+        this.loading = false;
387
+      });
388
+    },
389
+    // 取消按钮
390
+    cancel() {
391
+      this.open = false;
392
+      this.reset();
393
+    },
394
+    // 表单重置
395
+    reset() {
396
+      this.form = {
397
+        titleEvalId: null,
398
+        userId: null,
399
+        annual: null,
400
+        institude: null,
401
+        type: null,
402
+        level: null,
403
+        titleProfession: null,
404
+        sheet: null,
405
+        sheetStamp: null,
406
+        material: null,
407
+        isApproved: null,
408
+        publicityFile: null,
409
+        scanFile: null,
410
+        obtainTime: null,
411
+        applyTime: null,
412
+        titleUserId: null,
413
+        titleTime: null,
414
+        titleComment: null,
415
+        materialUploadTime: null,
416
+        confirmer: null,
417
+        confirmTime: null,
418
+        confirmStatus: null,
419
+      };
420
+      this.resetForm("form");
421
+    },
422
+    /** 搜索按钮操作 */
423
+    handleQuery() {
424
+      this.queryParams.pageNum = 1;
425
+      this.getList();
426
+    },
427
+    /** 重置按钮操作 */
428
+    resetQuery() {
429
+      this.resetForm("queryForm");
430
+      this.handleQuery();
431
+    },
432
+    // 多选框选中数据
433
+    handleSelectionChange(selection) {
434
+      this.ids = selection.map((item) => item.titleEvalId);
435
+      this.single = selection.length !== 1;
436
+      this.multiple = !selection.length;
437
+    },
438
+    /** 新增按钮操作 */
439
+    handleAdd() {
440
+      this.reset();
441
+      this.open = true;
442
+      this.title = "添加职称信息";
443
+    },
444
+    /** 修改按钮操作 */
445
+    handleUpdate(row) {
446
+      this.reset();
447
+      const titleEvalId = row.titleEvalId || this.ids;
448
+      getEval(titleEvalId).then((response) => {
449
+        this.form = response.data;
450
+        this.open = true;
451
+        this.title = "修改职称信息";
452
+      });
453
+    },
454
+    /** 提交按钮 */
455
+    submitForm() {
456
+      this.$refs["form"].validate((valid) => {
457
+        if (valid) {
458
+          if (this.form.titleEvalId != null) {
459
+            updateEval(this.form).then((response) => {
460
+              this.$modal.msgSuccess("修改成功");
461
+              this.open = false;
462
+              this.getList();
463
+            });
464
+          } else {
465
+            this.form.titleEvalId = new Snowflake(1n, 1n, 0n).nextId().toString();
466
+            this.form.titleUserId = this.$store.state.user.id;
467
+            this.form.isApproved = "1";
468
+            addEval(this.form).then((response) => {
469
+              this.$modal.msgSuccess("新增成功");
470
+              this.open = false;
471
+              this.getList();
472
+            });
473
+          }
474
+        }
475
+      });
476
+    },
477
+    /** 删除按钮操作 */
478
+    handleDelete(row) {
479
+      const titleEvalIds = row.titleEvalId || this.ids;
480
+      this.$modal
481
+        .confirm('是否确认删除职称信息编号为"' + titleEvalIds + '"的数据项?')
482
+        .then(function () {
483
+          return delEval(titleEvalIds);
484
+        })
485
+        .then(() => {
486
+          this.getList();
487
+          this.$modal.msgSuccess("删除成功");
488
+        })
489
+        .catch(() => {});
490
+    },
491
+    /** 导出按钮操作 */
492
+    handleExport() {
493
+      this.download(
494
+        "oa/titleEval/export",
495
+        {
496
+          ...this.queryParams,
497
+        },
498
+        `eval_${new Date().getTime()}.xlsx`
499
+      );
500
+    },
501
+  },
502
+};
17 503
 </script>
18 504
 
19 505
 <style lang="scss" scoped>

+ 267
- 111
oa-ui/src/views/oa/titles/record.vue Parādīt failu

@@ -1,15 +1,31 @@
1 1
 <template>
2 2
   <div class="app-container">
3
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
3
+    <el-form
4
+      :model="queryParams"
5
+      ref="queryForm"
6
+      size="small"
7
+      :inline="true"
8
+      v-show="showSearch"
9
+      label-width="68px"
10
+    >
4 11
       <el-form-item label="职称类型" prop="type">
5
-        <el-select v-model="queryParams.type" clearable placeholder="请选择职称类型" @change="handleQuery">
12
+        <el-select
13
+          v-model="queryParams.type"
14
+          clearable
15
+          placeholder="请选择职称类型"
16
+          @change="handleQuery"
17
+        >
6 18
           <el-option label="工程技术类" value="工程技术类"></el-option>
7 19
           <el-option label="工程经济类" value="工程经济类"></el-option>
8 20
           <el-option label="其他" value="其他"></el-option>
9 21
         </el-select>
10 22
       </el-form-item>
11 23
       <el-form-item label="职称级别" prop="level">
12
-        <el-select v-model="queryParams.level" clearable placeholder="请选择职称级别" @change="handleQuery">
24
+        <el-select
25
+          v-model="queryParams.level"
26
+          clearable
27
+          placeholder="请选择职称级别"
28
+          @change="handleQuery">
13 29
           <el-option label="正高级" value="正高级"></el-option>
14 30
           <el-option label="副高级" value="副高级"></el-option>
15 31
           <el-option label="高级" value="高级"></el-option>
@@ -19,59 +35,103 @@
19 35
         </el-select>
20 36
       </el-form-item>
21 37
       <el-form-item label="申请人" prop="userId">
22
-        <el-select v-model="queryParams.userId" filterable clearable @change="handleQuery">
23
-          <el-option v-for="item in $store.state.user.userList" :key="item.userId" :label="item.nickName"
24
-            :value="item.userId">
38
+        <el-select
39
+          v-model="queryParams.userId"
40
+          filterable
41
+          clearable
42
+          @change="handleQuery"
43
+        >
44
+          <el-option
45
+            v-for="item in $store.state.user.userList"
46
+            :key="item.userId"
47
+            :label="item.nickName"
48
+            :value="item.userId"
49
+          >
25 50
           </el-option>
26 51
         </el-select>
27 52
       </el-form-item>
28 53
       <el-form-item>
29
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
30
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
54
+        <el-button
55
+          type="primary"
56
+          icon="el-icon-search"
57
+          size="mini"
58
+          @click="handleQuery"
59
+          >搜索</el-button
60
+        >
61
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
62
+          >重置</el-button
63
+        >
31 64
       </el-form-item>
32 65
     </el-form>
33
-
34 66
     <el-row :gutter="10" class="mb8">
35 67
       <el-col :span="1.5">
36
-        <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd"
37
-          v-hasPermi="['oa:eval:add']">新增</el-button>
38
-      </el-col>
39
-      <el-col :span="1.5">
40
-        <el-button type="success" plain icon="el-icon-edit" size="mini" :disabled="single" @click="handleUpdate"
41
-          v-hasPermi="['oa:eval:edit']">修改</el-button>
42
-      </el-col>
43
-      <el-col :span="1.5">
44
-        <el-button type="danger" plain icon="el-icon-delete" size="mini" :disabled="multiple" @click="handleDelete"
45
-          v-hasPermi="['oa:eval:remove']">删除</el-button>
68
+        <el-button
69
+          type="success"
70
+          plain
71
+          icon="el-icon-edit"
72
+          size="mini"
73
+          :disabled="single"
74
+          @click="handleUpdate"
75
+          v-hasPermi="['oa:title:edit']"
76
+          >修改</el-button
77
+        >
46 78
       </el-col>
47 79
       <el-col :span="1.5">
48
-        <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport"
49
-          v-hasPermi="['oa:eval:export']">导出</el-button>
80
+        <el-button
81
+          type="warning"
82
+          plain
83
+          icon="el-icon-download"
84
+          size="mini"
85
+          @click="handleExport"
86
+          v-hasPermi="['oa:title:export']"
87
+          >导出</el-button
88
+        >
50 89
       </el-col>
51
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
90
+      <right-toolbar
91
+        :showSearch.sync="showSearch"
92
+        @queryTable="getList"
93
+      ></right-toolbar>
52 94
     </el-row>
53 95
 
54
-    <el-table v-loading="loading" :data="evalList" @selection-change="handleSelectionChange">
96
+    <el-table
97
+      v-loading="loading"
98
+      :data="evalList"
99
+      @selection-change="handleSelectionChange"
100
+    >
55 101
       <el-table-column type="selection" width="55" align="center" />
56 102
       <el-table-column label="申请人" align="center" prop="userId">
57 103
         <template slot-scope="scope">
58 104
           {{ getUserName(scope.row.userId) }}
59 105
         </template>
60 106
       </el-table-column>
61
-      <el-table-column label="申请时间" align="center" prop="applyTime" width="150">
107
+      <el-table-column
108
+        label="申请时间"
109
+        align="center"
110
+        prop="applyTime"
111
+        width="150"
112
+      >
62 113
         <template slot-scope="scope">
63
-          <span>{{ parseTime(scope.row.applyTime, '{y}-{m}-{d}') }}</span>
114
+          <span>{{ parseTime(scope.row.applyTime, "{y}-{m}-{d}") }}</span>
64 115
         </template>
65 116
       </el-table-column>
66 117
       <el-table-column label="评审年度" align="center" prop="annual" />
67 118
       <el-table-column label="评审单位" align="center" prop="institude" />
68 119
       <el-table-column label="职称类型" align="center" prop="type" />
69 120
       <el-table-column label="职称级别" align="center" prop="level" />
70
-      <el-table-column label="职称专业名称" align="center" prop="titleProfession" />
121
+      <el-table-column
122
+        label="职称专业名称"
123
+        align="center"
124
+        prop="titleProfession"
125
+      />
71 126
       <el-table-column label="审核意见" align="center" prop="titleComment" />
72
-      <el-table-column label="审核时间" align="center" prop="titleTime" width="180">
127
+      <el-table-column
128
+        label="审核时间"
129
+        align="center"
130
+        prop="titleTime"
131
+        width="180"
132
+      >
73 133
         <template slot-scope="scope">
74
-          <span>{{ parseTime(scope.row.titleTime, '{y}-{m}-{d}') }}</span>
134
+          <span>{{ parseTime(scope.row.titleTime, "{y}-{m}-{d}") }}</span>
75 135
         </template>
76 136
       </el-table-column>
77 137
       <el-table-column label="职称管理员" align="center" prop="titleUserId">
@@ -79,96 +139,150 @@
79 139
           {{ getUserName(scope.row.titleUserId) }}
80 140
         </template>
81 141
       </el-table-column>
82
-      <el-table-column label="确认时间" align="center" prop="confirmTime" width="150">
142
+      <el-table-column
143
+        label="确认时间"
144
+        align="center"
145
+        prop="confirmTime"
146
+        width="150"
147
+      >
83 148
         <template slot-scope="scope">
84
-          <span>{{ parseTime(scope.row.confirmTime, '{y}-{m}-{d}') }}</span>
149
+          <span>{{ parseTime(scope.row.confirmTime, "{y}-{m}-{d}") }}</span>
85 150
         </template>
86 151
       </el-table-column>
87
-      <el-table-column label="确认状态" align="center" prop="confirmStatus" />
88
-      <el-table-column label="是否通过" align="center" prop="isApproved" />
89
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
152
+      <el-table-column label="确认状态" align="center" prop="confirmStatus" >
90 153
         <template slot-scope="scope">
91
-          <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
92
-            v-hasPermi="['oa:eval:edit']">修改</el-button>
93
-          <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
94
-            v-hasPermi="['oa:eval:remove']">删除</el-button>
154
+          <el-tag :type="scope.row.confirmStatus == '1' ? 'success' : 'danger'">
155
+            {{ scope.row.confirmStatus == "1" ? "已确认" : "未确认" }}
156
+          </el-tag>
157
+        </template>
158
+      </el-table-column>
159
+      <el-table-column label="是否通过" align="center" prop="isApproved" >
160
+        <template slot-scope="scope">
161
+          <el-tag :type="scope.row.isApproved == '1' ? 'success' : 'danger'">
162
+            {{ scope.row.isApproved == "1" ? "通过" : "未通过" }}
163
+          </el-tag>
164
+        </template>
165
+      </el-table-column>
166
+      <el-table-column
167
+        label="操作"
168
+        align="center"
169
+        class-name="small-padding fixed-width"
170
+      >
171
+        <template slot-scope="scope">
172
+          <el-button
173
+            size="mini"
174
+            type="text"
175
+            icon="el-icon-edit"
176
+            @click="handleUpdate(scope.row)"
177
+            v-hasPermi="['oa:title:edit']"
178
+            >修改</el-button
179
+          >
95 180
         </template>
96 181
       </el-table-column>
97 182
     </el-table>
98 183
 
99
-    <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
100
-      @pagination="getList" />
184
+    <pagination
185
+      v-show="total > 0"
186
+      :total="total"
187
+      :page.sync="queryParams.pageNum"
188
+      :limit.sync="queryParams.pageSize"
189
+      @pagination="getList"
190
+    />
101 191
 
102 192
     <!-- 添加或修改职称评审对话框 -->
103
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
104
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
193
+    <el-dialog :title="title" :visible.sync="open" width="60%" append-to-body>
194
+      <el-form ref="form" :model="form" :rules="formRules" label-width="120px">
105 195
         <el-form-item label="申请人" prop="userId">
106
-          <el-input v-model="form.userId" placeholder="请输入申请人" />
196
+          {{ getUserName(form.userId) }}
107 197
         </el-form-item>
108 198
         <el-form-item label="评审年度" prop="annual">
109
-          <el-input v-model="form.annual" placeholder="请输入评审年度" />
199
+          {{ form.annual }}
110 200
         </el-form-item>
111 201
         <el-form-item label="评审单位" prop="institude">
112
-          <el-input v-model="form.institude" placeholder="请输入评审单位" />
202
+          {{ form.institude }}
203
+        </el-form-item>
204
+        <el-form-item label="职称类型" prop="type">
205
+          {{ form.type }}
113 206
         </el-form-item>
114 207
         <el-form-item label="职称级别" prop="level">
115
-          <el-input v-model="form.level" placeholder="请输入职称级别" />
208
+          {{ form.level }}
116 209
         </el-form-item>
117 210
         <el-form-item label="职称专业名称" prop="titleProfession">
118
-          <el-input v-model="form.titleProfession" placeholder="请输入职称专业名称" />
211
+          {{ form.titleProfession }}
119 212
         </el-form-item>
120
-        <el-form-item label="评审表" prop="sheet">
121
-          <el-input v-model="form.sheet" placeholder="请输入评审表" />
213
+        <el-form-item label="评审表(盖章前)" prop="sheet">
214
+          <el-link
215
+            type="primary"
216
+            @click="reviewWord(`${baseUrl}${'/profile/upload' + form.sheet}`)"
217
+          >
218
+            {{ getFileName(form.sheet) }}
219
+          </el-link>
220
+          <el-link
221
+            class="ml20"
222
+            type="warning"
223
+            :href="`${baseUrl}${'/profile/upload' + form.sheet}`"
224
+            :underline="false"
225
+            target="_blank"
226
+          >
227
+            <span class="el-icon-download">下载文件</span>
228
+          </el-link>
122 229
         </el-form-item>
123
-        <el-form-item label="评审表" prop="sheetStamp">
124
-          <el-input v-model="form.sheetStamp" placeholder="请输入评审表" />
230
+        <el-form-item label="评审表(盖章后)" prop="sheetStamp">
231
+          <el-link
232
+            type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.sheetStamp}`)">
233
+            {{ getFileName(form.sheetStamp) }}
234
+          </el-link>
235
+          <el-link
236
+            class="ml20"
237
+            type="warning"
238
+            :href="`${baseUrl}${'/profile/upload' + form.sheetStamp}`"
239
+            :underline="false"
240
+            target="_blank"
241
+          >
242
+            <span class="el-icon-download">下载文件</span>
243
+          </el-link>
125 244
         </el-form-item>
126 245
         <el-form-item label="其他材料" prop="material">
127
-          <el-input v-model="form.material" placeholder="请输入其他材料" />
246
+          <el-link
247
+            type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.material}`)">
248
+            {{ getFileName(form.material) }}
249
+          </el-link>
250
+          <el-link
251
+            class="ml20"
252
+            type="warning"
253
+            :href="`${baseUrl}${'/profile/upload' + form.material}`"
254
+            :underline="false"
255
+            target="_blank">
256
+            <span class="el-icon-download">下载文件</span>
257
+          </el-link>
128 258
         </el-form-item>
259
+        <!-- 审核是否通过并添加材料 -->
129 260
         <el-form-item label="是否通过" prop="isApproved">
130
-          <el-input v-model="form.isApproved" placeholder="请输入是否通过" />
261
+          <el-switch
262
+            v-model="form.isApproved"
263
+            active-value="1"
264
+            inactive-value="0"
265
+            active-text="通过"
266
+            inactive-text="未通过">
267
+          </el-switch>
131 268
         </el-form-item>
269
+        <template v-if="form.isApproved == '1'">
132 270
         <el-form-item label="公示红头文件" prop="publicityFile">
133
-          <file-upload v-model="form.publicityFile" />
271
+          <file-upload v-model="form.publicityFile" :fileType="['pdf']"/>
134 272
         </el-form-item>
135 273
         <el-form-item label="证书扫描件" prop="scanFile">
136
-          <file-upload v-model="form.scanFile" />
274
+          <file-upload v-model="form.scanFile" :fileType="['pdf']"/>
137 275
         </el-form-item>
138 276
         <el-form-item label="证书取得时间" prop="obtainTime">
139
-          <el-date-picker clearable v-model="form.obtainTime" type="date" value-format="yyyy-MM-dd"
277
+          <el-date-picker
278
+            clearable
279
+            v-model="form.obtainTime"
280
+            type="date"
281
+            value-format="yyyy-MM-dd"
140 282
             placeholder="请选择证书取得时间">
141 283
           </el-date-picker>
142 284
         </el-form-item>
143
-        <el-form-item label="申请时间" prop="applyTime">
144
-          <el-date-picker clearable v-model="form.applyTime" type="date" value-format="yyyy-MM-dd"
145
-            placeholder="请选择申请时间">
146
-          </el-date-picker>
147
-        </el-form-item>
148
-        <el-form-item label="职称管理员" prop="titleUserId">
149
-          <el-input v-model="form.titleUserId" placeholder="请输入职称管理员" />
150
-        </el-form-item>
151
-        <el-form-item label="职称管理员审核时间" prop="titleTime">
152
-          <el-date-picker clearable v-model="form.titleTime" type="date" value-format="yyyy-MM-dd"
153
-            placeholder="请选择职称管理员审核时间">
154
-          </el-date-picker>
155
-        </el-form-item>
156
-        <el-form-item label="职称管理员审核意见" prop="titleComment">
157
-          <el-input v-model="form.titleComment" placeholder="请输入职称管理员审核意见" />
158
-        </el-form-item>
159
-        <el-form-item label="盖章材料上传时间" prop="materialUploadTime">
160
-          <el-date-picker clearable v-model="form.materialUploadTime" type="date" value-format="yyyy-MM-dd"
161
-            placeholder="请选择盖章材料上传时间">
162
-          </el-date-picker>
163
-        </el-form-item>
164
-        <el-form-item label="确认人" prop="confirmer">
165
-          <el-input v-model="form.confirmer" placeholder="请输入确认人" />
166
-        </el-form-item>
167
-        <el-form-item label="确认时间" prop="confirmTime">
168
-          <el-date-picker clearable v-model="form.confirmTime" type="date" value-format="yyyy-MM-dd"
169
-            placeholder="请选择确认时间">
170
-          </el-date-picker>
171
-        </el-form-item>
285
+        </template>
172 286
       </el-form>
173 287
       <div slot="footer" class="dialog-footer">
174 288
         <el-button type="primary" @click="submitForm">确 定</el-button>
@@ -179,12 +293,14 @@
179 293
 </template>
180 294
 
181 295
 <script>
182
-import { listEval, getEval, delEval, addEval, updateEval } from "@/api/oa/titles/titles";
296
+import {listEval,getEval,delEval,addEval,updateEval} from "@/api/oa/titles/titles";
297
+import {Snowflake} from"@/utils/snowFlake.js";
183 298
 
184 299
 export default {
185 300
   name: "Eval",
186 301
   data() {
187 302
     return {
303
+      baseUrl: process.env.VUE_APP_BASE_API,
188 304
       // 遮罩层
189 305
       loading: true,
190 306
       // 选中数组
@@ -227,24 +343,46 @@ export default {
227 343
         materialUploadTime: null,
228 344
         confirmer: null,
229 345
         confirmTime: null,
230
-        confirmStatus: null
346
+        confirmStatus: null,
231 347
       },
232 348
       // 表单参数
233 349
       form: {},
234 350
       // 表单校验
235
-      rules: {
236
-      }
351
+      rules: {},
237 352
     };
238 353
   },
239 354
   created() {
240 355
     this.getList();
241 356
   },
357
+  watch: {
358
+    'form.isApproved'(newVal) {
359
+      if (newVal === "0") {
360
+        this.clearFiles();
361
+      }
362
+    }
363
+  },
364
+  computed:{
365
+    formRules() {
366
+      return {
367
+        publicityFile: [
368
+          { required: () => this.form.isApproved == '1', message: '请上传公示红头文件', trigger: 'change' }
369
+        ],
370
+        scanFile: [
371
+          { required: () => this.form.isApproved == '1', message: '请上传证书扫描件', trigger: 'change' }
372
+        ],
373
+        obtainTime: [
374
+          { required: () => this.form.isApproved == '1', message: '请选择证书取得时间', trigger: 'change'}
375
+        ]
376
+      }
377
+  },
378
+  },
242 379
   methods: {
243 380
     /** 查询职称评审列表 */
244 381
     getList() {
245 382
       this.loading = true;
246
-      listEval(this.queryParams).then(response => {
247
-        this.evalList = response.rows;
383
+      listEval(this.queryParams).then((response) => {
384
+        this.evalList = response.rows.filter(
385
+          item => !(item.isApproved === "1" && item.confirmStatus == null));
248 386
         this.total = response.total;
249 387
         this.loading = false;
250 388
       });
@@ -278,7 +416,7 @@ export default {
278 416
         materialUploadTime: null,
279 417
         confirmer: null,
280 418
         confirmTime: null,
281
-        confirmStatus: null
419
+        confirmStatus: null,
282 420
       };
283 421
       this.resetForm("form");
284 422
     },
@@ -294,9 +432,9 @@ export default {
294 432
     },
295 433
     // 多选框选中数据
296 434
     handleSelectionChange(selection) {
297
-      this.ids = selection.map(item => item.titleEvalId)
298
-      this.single = selection.length !== 1
299
-      this.multiple = !selection.length
435
+      this.ids = selection.map((item) => item.titleEvalId);
436
+      this.single = selection.length !== 1;
437
+      this.multiple = !selection.length;
300 438
     },
301 439
     /** 新增按钮操作 */
302 440
     handleAdd() {
@@ -307,49 +445,67 @@ export default {
307 445
     /** 修改按钮操作 */
308 446
     handleUpdate(row) {
309 447
       this.reset();
310
-      const titleEvalId = row.titleEvalId || this.ids
311
-      getEval(titleEvalId).then(response => {
448
+      const titleEvalId = row.titleEvalId || this.ids;
449
+      getEval(titleEvalId).then((response) => {
312 450
         this.form = response.data;
313 451
         this.open = true;
314 452
         this.title = "修改职称评审";
315 453
       });
316 454
     },
455
+    /**switch切换到未通过时清除上传文件 */
456
+    clearFiles() {
457
+      this.form.publicityFile = "";
458
+      this.form.scanFile= "";
459
+      this.form.obtainTime = "";
460
+    },
317 461
     /** 提交按钮 */
318 462
     submitForm() {
319
-      this.$refs["form"].validate(valid => {
463
+      if(this.form.confirmStatus=="1"){
464
+      this.$refs["form"].validate((valid) => {
320 465
         if (valid) {
321 466
           if (this.form.titleEvalId != null) {
322
-            updateEval(this.form).then(response => {
467
+            updateEval(this.form).then((response) => {
323 468
               this.$modal.msgSuccess("修改成功");
324 469
               this.open = false;
325 470
               this.getList();
326 471
             });
327 472
           } else {
328
-            addEval(this.form).then(response => {
473
+            addEval(this.form).then((response) => {
329 474
               this.$modal.msgSuccess("新增成功");
330 475
               this.open = false;
331 476
               this.getList();
332 477
             });
333 478
           }
334 479
         }
335
-      });
480
+      })}
481
+      else{
482
+         this.$message.error('未在流程中确认信息,无法提交。')
483
+      }
336 484
     },
337 485
     /** 删除按钮操作 */
338 486
     handleDelete(row) {
339 487
       const titleEvalIds = row.titleEvalId || this.ids;
340
-      this.$modal.confirm('是否确认删除职称评审编号为"' + titleEvalIds + '"的数据项?').then(function () {
341
-        return delEval(titleEvalIds);
342
-      }).then(() => {
343
-        this.getList();
344
-        this.$modal.msgSuccess("删除成功");
345
-      }).catch(() => { });
488
+      this.$modal
489
+        .confirm('是否确认删除职称评审编号为"' + titleEvalIds + '"的数据项?')
490
+        .then(function () {
491
+          return delEval(titleEvalIds);
492
+        })
493
+        .then(() => {
494
+          this.getList();
495
+          this.$modal.msgSuccess("删除成功");
496
+        })
497
+        .catch(() => {});
346 498
     },
347 499
     /** 导出按钮操作 */
348 500
     handleExport() {
349
-      this.download('oa/eval/export', {
350
-        ...this.queryParams
351
-      }, `eval_${new Date().getTime()}.xlsx`)
352
-    }
353
-  }
501
+      this.download(
502
+        "oa/titleEval/export",
503
+        {
504
+          ...this.queryParams,
505
+        },
506
+        `eval_${new Date().getTime()}.xlsx`
507
+      );
508
+    },
509
+  },
354 510
 };
355 511
 </script>

Notiek ielāde…
Atcelt
Saglabāt