浏览代码

新增人事管理初始学历专业等字段、新增管理员可发起项目预算流程

余思翰 3 个月前
父节点
当前提交
3768f4e9cc

+ 0
- 1
oa-ui/src/views/contractStatistic/index.vue 查看文件

@@ -237,7 +237,6 @@ export default {
237 237
       }
238 238
     },
239 239
     changePage() {
240
-      debugger
241 240
       if (this.status == 'normal') {
242 241
         this.getContractList();
243 242
       } else {

+ 0
- 1
oa-ui/src/views/flowable/form/budget/budgetInfo.vue 查看文件

@@ -491,7 +491,6 @@ export default {
491 491
     },
492 492
     confirmSucess(taskName) {
493 493
       const params = { taskId: this.taskForm.taskId };
494
-      debugger
495 494
       if (taskName == '分管审核') {
496 495
         if (this.budgetForm.managerComment == '' || this.budgetForm.managerComment == null) {
497 496
           this.$modal.msgError('请填写审核意见');

+ 0
- 1
oa-ui/src/views/flowable/form/components/print/settlePrint.vue 查看文件

@@ -205,7 +205,6 @@ export default {
205 205
     initTable() {
206 206
       this.deductionsList = []  //扣除列表
207 207
       this.deptSettleList = []  //部门分配列表
208
-      debugger
209 208
       for (let s of this.settleList) {
210 209
         if (s.tableNumber == '0') {
211 210
           this.deductionsList.push(s)

+ 44
- 59
oa-ui/src/views/flowable/form/settleForm.vue 查看文件

@@ -2,14 +2,14 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-30 09:03:14
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2025-01-09 11:43:24
5
+ * @LastEditTime: 2025-02-26 14:48:48
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container" v-loading="loading">
9 9
     <el-row :gutter="20">
10 10
       <el-col :span="flowDisabled ? 19 : 24" :xs="24">
11 11
         <el-button type="success" icon="el-icon-printer" @click="printOpen = true">打印</el-button>
12
-        <h2 class="text-center">项目结算表</h2>
12
+        <h2 class="text-center">项目结算表 <span style="color:#f56c6c" v-if="isAppend">(追加结算)</span> </h2>
13 13
         <div class="mt20 mb20" v-if="showAlter && flowDisabled">
14 14
           <el-alert title="任务被退回,请修改后重新提交" type="error" :closable="false">
15 15
             <return-comment :taskForm="taskForm" @isReturn="isReturn"></return-comment>
@@ -90,34 +90,6 @@
90 90
               </el-link>
91 91
             </div>
92 92
           </el-form-item>
93
-          <!-- <el-form-item label="经营发展部审核结算单" prop="">
94
-            <FileUpload v-if="taskName == '经营发展部校核'" :limit="1" :filePathName="'项目结算/经营发展部审核结算单'"
95
-              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']" @input="setModifyDocument">
96
-            </FileUpload>
97
-            <div v-if="form.modifyDocument" class="upload-list">
98
-              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.modifyDocument}`)">
99
-                {{ getFileName(form.modifyDocument) }}
100
-              </el-link>
101
-              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.modifyDocument}`"
102
-                :underline="false" target="_blank">
103
-                <span class="el-icon-download">下载文件</span>
104
-              </el-link>
105
-            </div>
106
-          </el-form-item>
107
-          <el-form-item label="分管领导审核结算单" prop="">
108
-            <FileUpload v-if="taskName == '分管审核'" :limit="1" :filePathName="'项目结算/分管领导审核结算单'"
109
-              :fileType="['doc', 'docx', 'xls', 'xlsx', 'pdf', 'rar', 'zip']" @input="setFinalDocument">
110
-            </FileUpload>
111
-            <div v-if="form.finalDocument" class="upload-list">
112
-              <el-link type="primary" @click="reviewWord(`${baseUrl}${'/profile/upload' + form.finalDocument}`)">
113
-                {{ getFileName(form.finalDocument) }}
114
-              </el-link>
115
-              <el-link class="ml20" type="warning" :href="`${baseUrl}${'/profile/upload' + form.finalDocument}`"
116
-                :underline="false" target="_blank">
117
-                <span class="el-icon-download">下载文件</span>
118
-              </el-link>
119
-            </div>
120
-          </el-form-item> -->
121 93
 
122 94
           <div class="headers" v-hasRole="['leader', 'business']">
123 95
             合同信息
@@ -238,8 +210,10 @@
238 210
                 <!-- <el-input-number style="width:100px" v-model="work.settle" clearable :controls="false"></el-input-number> -->
239 211
                 <div>{{ work.settle }}</div>
240 212
                 <div v-if="taskName == '结算发起'">
241
-                  <el-button size="mini" type="text" v-if="Number(work.settle) <= 600 && Number(work.settle) != 0" @click="setSettle(work)">置为600</el-button>
242
-                  <el-button size="mini" type="text" v-if="Number(work.settle) <= 600 && Number(work.settle) != 0" @click="resetSettle(work)">还原</el-button>
213
+                  <el-button size="mini" type="text" v-if="Number(work.settle) <= 600 && Number(work.settle) != 0"
214
+                    @click="setSettle(work)">置为600</el-button>
215
+                  <el-button size="mini" type="text" v-if="Number(work.settle) <= 600 && Number(work.settle) != 0"
216
+                    @click="resetSettle(work)">还原</el-button>
243 217
                 </div>
244 218
               </td>
245 219
               <td>
@@ -282,7 +256,7 @@
282 256
                 <td style="width: 280px">备注</td>
283 257
                 <td style="width: 100px">操作</td>
284 258
               </tr>
285
-              <tr v-for="(  work, index  ) in settleSumList  " :key="index">
259
+              <tr v-for="(work, index) in settleSumList" :key="index">
286 260
                 <td>
287 261
                   {{ index + 1 }}
288 262
                 </td>
@@ -318,7 +292,7 @@
318 292
                 <td style="width: 280px">备注</td>
319 293
                 <td style="width: 100px">操作</td>
320 294
               </tr>
321
-              <tr v-for="(  dept, index  ) in deptSettleList  " :key="index" v-if="dept.content != '实际结算总金额'">
295
+              <tr v-for="(dept, index) in deptSettleList" :key="index" v-if="dept.content != '实际结算总金额'">
322 296
                 <td :rowspan="deptSettleList.length" v-if="index == 0">
323 297
                   {{ Number(actualSumSettle).toFixed(2) }}
324 298
                 </td>
@@ -526,7 +500,7 @@
526 500
     </el-dialog>
527 501
 
528 502
     <el-dialog title="导入结算工作量" :visible.sync="importOpen" width="400px" append-to-body>
529
-      <settle-import @getDataList="getImportSettleList" @cancel="importOpen = false" ></settle-import>
503
+      <settle-import @getDataList="getImportSettleList" @cancel="importOpen = false"></settle-import>
530 504
     </el-dialog>
531 505
   </div>
532 506
 </template>
@@ -536,23 +510,19 @@ import flow from "@/views/flowable/task/todo/detail/flow";
536 510
 import { flowXmlAndNode } from "@/api/flowable/definition";
537 511
 import { parseTime } from "@/utils/ruoyi";
538 512
 import { listProject, getProject } from "@/api/oa/project/project";
539
-import { deepClone } from "@/utils";
540
-import { listSettle, getSettle, delSettle, addSettle, updateSettle } from "@/api/oa/settle/settle";
541
-import { listSettleSummary, getSettleSummary, addSettleSummary, delSettleSummary, updateSettleSummary } from "@/api/oa/settle/settleSummary";
542
-import { listSettleWork, getSettleWork, addSettleWork, updateSettleWork, delSettleWork } from "@/api/oa/settle/settleWork";
543
-import { listProjectContract, addProjectContract } from "@/api/oa/contract/projectContract";
513
+import { listSettle, getSettle, addSettle, updateSettle } from "@/api/oa/settle/settle";
514
+import { listSettleSummary, addSettleSummary, delSettleSummary } from "@/api/oa/settle/settleSummary";
515
+import { listSettleWork, addSettleWork, delSettleWork } from "@/api/oa/settle/settleWork";
544 516
 import { getPrice, getPriceRemarkByWorkType } from "@/api/oa/price/price";
545 517
 import ChoosePrice from "./components/choosePrice.vue";
546 518
 import { getUser } from "@/api/system/user";
547 519
 import { getUserByRole } from "@/api/system/role";
548 520
 import { getUserByPost } from "@/api/system/post";
549
-import { complete, getNextFlowNode, returnTask, findReCommitTask, taskRecommit } from "@/api/flowable/todo";
550
-import { getUsersDeptLeader, getUsersDeptLeaderByDept, getUsersManageLeaderByDept, } from "@/api/system/post.js";
521
+import { complete, getNextFlowNode, findReCommitTask, taskRecommit } from "@/api/flowable/todo";
522
+import { getUsersDeptLeaderByDept, getUsersManageLeaderByDept, } from "@/api/system/post.js";
551 523
 import { listBudget } from "@/api/oa/budget/budget";
552 524
 import { listBudgetSettle } from "@/api/oa/budget/budgetSettle";
553 525
 import SettlePrint from "./components/print/settlePrint.vue";
554
-import { getDept } from "@/api/system/dept";
555
-import { getContract } from "@/api/oa/contract/contract";
556 526
 import ChooseProject from "./components/chooseProject.vue";
557 527
 import projectContractInfo from "./projectContractInfo.vue";
558 528
 import ReturnComment from '@/views/flowable/form/components/flowBtn/returnComment.vue';
@@ -598,6 +568,7 @@ export default {
598 568
   data() {
599 569
     return {
600 570
       baseUrl: process.env.VUE_APP_BASE_API,
571
+      isAppend: false,//是否追加结算
601 572
       printOpen: false,
602 573
       loading: false,
603 574
       drawer: false,
@@ -663,7 +634,7 @@ export default {
663 634
       projectId: '',
664 635
       showAlter: true,
665 636
       returnOpen: false,
666
-      importOpen:false,
637
+      importOpen: false,
667 638
     };
668 639
   },
669 640
   created() {
@@ -708,6 +679,7 @@ export default {
708 679
       const res = await listSettle({ settleId: this.taskForm.formId });
709 680
       if (res.total === 1) {
710 681
         this.form = res.rows[0];
682
+        this.getIsAppend(this.taskForm.formId, res.rows[0].projectId) //判断是否为追加结算
711 683
         this.flag = true;
712 684
         const settleId = this.taskForm.formId;
713 685
         const [
@@ -797,7 +769,19 @@ export default {
797 769
       this.loading = false;
798 770
       this.deptList = this.$store.state.user.deptList
799 771
     },
800
-
772
+    async getIsAppend(settleId, projectId) {
773
+      let res = await listSettle({ projectId });
774
+      if (res.total > 1) {
775
+        let arr = res.rows
776
+        const target = arr.find(item => item.settleId === settleId);
777
+        const parseTime = (timeStr) => Date.parse(timeStr);
778
+        const allTimestamps = arr.map(item => parseTime(item.reportTime));
779
+        const minTimestamp = Math.min(...allTimestamps);
780
+        const targetTimestamp = parseTime(target.reportTime);
781
+        const isAppend = targetTimestamp !== minTimestamp;
782
+        this.isAppend = isAppend;
783
+      }
784
+    },
801 785
     async getBudgetSettle() {
802 786
       let budgetData = await listBudget({ projectId: this.form.projectId })
803 787
       if (budgetData.total == 1) {
@@ -1039,13 +1023,13 @@ export default {
1039 1023
       this.calculateActualSumSettle();
1040 1024
     },
1041 1025
     // 置为600
1042
-    setSettle(work){
1026
+    setSettle(work) {
1043 1027
       work.settle = 600;
1044 1028
       work.remark = '不足600,按600算';
1045 1029
       this.calculateSumSettle();
1046 1030
       this.calculateActualSumSettle();
1047 1031
     },
1048
-    resetSettle(work){
1032
+    resetSettle(work) {
1049 1033
       work.remark = '';
1050 1034
       this.calculateSettle(work)
1051 1035
     },
@@ -1187,12 +1171,19 @@ export default {
1187 1171
         }
1188 1172
       }
1189 1173
     },
1190
-    confirmProject(val) {
1174
+    async confirmProject(val) {
1191 1175
       if (val.length == 1) {
1192 1176
         this.prOpen = false;
1193 1177
         this.chooseProject = val[0];
1194
-        this.$set(this.form, 'projectId', val[0].projectId)
1195
-        this.isSelect = true;
1178
+        let settleData = await listSettle({ projectId: val[0].projectId });
1179
+        console.log(settleData)
1180
+        if (settleData.total >= 1) {
1181
+          this.$modal.confirm('该项目已经发起过项目结算,是否追加结算?').then(() => {
1182
+            this.$set(this.form, 'projectId', val[0].projectId)
1183
+            this.isSelect = true;
1184
+            this.isAppend = true;
1185
+          })
1186
+        }
1196 1187
       } else {
1197 1188
         this.$message.error("项目只能选择一个!");
1198 1189
         return;
@@ -1203,12 +1194,6 @@ export default {
1203 1194
       getPriceRemarkByWorkType({ workType }).then((res) => {
1204 1195
         if (res.code == 200) {
1205 1196
           if (workType != undefined) this.$set(work, "noteTip", res.msg);
1206
-          // this.$notify({
1207
-          //   title: workType,
1208
-          //   dangerouslyUseHTMLString: true,
1209
-          //   message: res.msg,
1210
-          //   duration: 0
1211
-          // });
1212 1197
         }
1213 1198
       });
1214 1199
     },
@@ -1226,9 +1211,9 @@ export default {
1226 1211
         return this.form.dszComment
1227 1212
       }
1228 1213
     },
1229
-    getImportSettleList(val){
1214
+    getImportSettleList(val) {
1230 1215
       this.settleWorkList = val;
1231
-      for(let work of this.settleWorkList){
1216
+      for (let work of this.settleWorkList) {
1232 1217
         this.calculateSettle(work)
1233 1218
       }
1234 1219
       this.importOpen = false;

+ 48
- 15
oa-ui/src/views/flowable/task/myProcess/index.vue 查看文件

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-01-03 09:23:11
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-10-25 14:05:06
5
+ * @LastEditTime: 2025-02-26 17:16:24
6 6
 -->
7 7
 <template>
8 8
   <div class="app-container">
@@ -75,6 +75,18 @@
75 75
 
76 76
     <!-- 发起流程 -->
77 77
     <el-dialog :title="title" :visible.sync="open" width="400px" append-to-body>
78
+      <div v-if="$store.getters.userId == 1">
79
+        <el-select v-model="queryType" style="width: 120px;">
80
+          <el-option label="项目编号" value="1"></el-option>
81
+          <el-option label="项目名称" value="2"></el-option>
82
+        </el-select>
83
+        <el-select v-model="projectId" clearable filterable remote reserve-keyword placeholder="请输入关键字"
84
+          :remote-method="remoteMethod" style="width: 300px;">
85
+          <el-option v-for="project in projectList" :key="project.projectId"
86
+            :label="project.projectNumber + '-' + project.projectName" :value="project.projectId">
87
+          </el-option>
88
+        </el-select>
89
+      </div>
78 90
       <progress-tree :definitionList="definitionList" @confirm="handleStartProcess"
79 91
         @close="open = false"></progress-tree>
80 92
     </el-dialog>
@@ -105,6 +117,7 @@ import { getProcessVariables } from "@/api/flowable/definition";
105 117
 import conditionDisplay from '@/views/flowable/form/components/conditionDisplay.vue';
106 118
 import { deleteResources } from "@/utils/deleteResource";
107 119
 import { listPerformance } from "@/api/oa/performance/performance";
120
+import { listProject } from '@/api/oa/project/project';
108 121
 export default {
109 122
   name: "Deploy",
110 123
   components: {
@@ -114,6 +127,9 @@ export default {
114 127
   },
115 128
   data() {
116 129
     return {
130
+      queryType: '1',
131
+      projectId: '',
132
+      projectList: [],
117 133
       // 遮罩层
118 134
       loading: true,
119 135
       processLoading: true,
@@ -276,6 +292,27 @@ export default {
276 292
         })
277 293
       }
278 294
     },
295
+    remoteMethod(val) {
296
+      let params1 = {
297
+        pageNum: 1,
298
+        pageSize: 20,
299
+        projectNumber: val
300
+      }
301
+      let params2 = {
302
+        pageNum: 1,
303
+        pageSize: 20,
304
+        projectName: val
305
+      }
306
+      let params = {};
307
+      if (this.queryType == '1') {
308
+        params = params1
309
+      } else {
310
+        params = params2
311
+      }
312
+      listProject(params).then(res => {
313
+        this.projectList = res.rows;
314
+      })
315
+    },
279 316
     /** 新增按钮操作 */
280 317
     handleAdd() {
281 318
       this.open = true;
@@ -305,7 +342,7 @@ export default {
305 342
       let formId = new Snowflake(1n, 1n, 0n).nextId().toString();
306 343
       getNextFlowNodeByStart({ deploymentId: row.deploymentId, variables: { formId: formId } }).then(res => {
307 344
         let data = res.data;
308
-        if (data.dataType === 'dynamic') {
345
+        if (data.dataType === 'dynamic' && row.name != '项目预算') {
309 346
           if (data.type === 'assignee') { // 指定人员
310 347
             this.checkSendUser = true;
311 348
             this.checkType = "single";
@@ -331,6 +368,10 @@ export default {
331 368
           if (row.id) {
332 369
             variables.variables = formData;
333 370
             let routePath = this.getRoutePath(row);
371
+            if (row.name == '项目预算') {
372
+              variables.approval = 1;
373
+              formData.formId = this.projectId;
374
+            }
334 375
             // 启动流程并将表单数据加入流程变量
335 376
             definitionStart(row.id, JSON.stringify(variables)).then(res => {
336 377
               this.$modal.msgSuccess(res.msg);
@@ -343,6 +384,11 @@ export default {
343 384
                 if (records.length == 1) {
344 385
                   records = records[0]
345 386
                 }
387
+                if(row.name == '项目预算'){
388
+                  this.open = false;
389
+                  this.getList();
390
+                  return
391
+                }
346 392
                 this.$router.push({
347 393
                   path: routePath,
348 394
                   query: {
@@ -357,23 +403,10 @@ export default {
357 403
                   }
358 404
                 })
359 405
               })
360
-              // this.goBack();
361
-              // this.$router.push({
362
-              //   path: '/flowable/task/myProcess/send/index',
363
-              //   query: {
364
-              //     deployId: row.deploymentId,
365
-              //     procDefId: row.id,
366
-              //     name: row.name
367
-              //   }
368
-              // })
369 406
             })
370 407
           }
371 408
         }
372 409
       })
373
-      // } else {
374
-
375
-      // }
376
-
377 410
     },
378 411
     getRoutePath(row) {
379 412
       let path;

+ 7
- 2
oa-ui/src/views/flowable/task/myProcess/progressTree.vue 查看文件

@@ -1,8 +1,8 @@
1 1
 <!--
2 2
  * @Author: ysh
3 3
  * @Date: 2024-04-18 15:14:45
4
- * @LastEditors: wrh
5
- * @LastEditTime: 2024-07-04 13:06:39
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2025-02-26 15:03:14
6 6
 -->
7 7
 <template>
8 8
   <div>
@@ -82,6 +82,11 @@ export default {
82 82
         else if (i.category == "project") {
83 83
           if (i.name != "项目预算" && i.name != "安全交底" && i.name != "技术交底" && i.name != "技术方案")
84 84
             this.treeData[1].children.push(i);
85
+          if (i.name == "项目预算") {
86
+            if (this.$store.getters.userId == 1) {
87
+              this.treeData[1].children.push(i);
88
+            }
89
+          }
85 90
         } else if (i.category == "finance") {
86 91
           this.treeData[2].children.push(i);
87 92
         } else if (i.category == "oa") {

+ 8
- 2
oa-ui/src/views/flowable/task/todo/index.vue 查看文件

@@ -11,7 +11,7 @@
11 11
         </el-date-picker>
12 12
       </el-form-item>
13 13
       <el-form-item label="标题">
14
-        <el-input v-model="searchText" size="small"  @input="filterTitle()" clearable placeholder="仅搜索当前页面标题"></el-input>
14
+        <el-input v-model="searchText" size="small" @input="filterTitle()" clearable placeholder="仅搜索当前页面标题"></el-input>
15 15
       </el-form-item>
16 16
       <el-form-item>
17 17
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -50,7 +50,8 @@
50 50
       </el-table-column>
51 51
     </el-table>
52 52
 
53
-    <div class="mt20" style="font-size:12px;color:#e45656;text-align:right;">tips:标题搜索只搜索当前页码列表,可在右下角调整每页条数,若当前页面未查询到,可点击下一页;</div>
53
+    <div class="mt20" style="font-size:12px;color:#e45656;text-align:right;">
54
+      tips:标题搜索只搜索当前页码列表,可在右下角调整每页条数,若当前页面未查询到,可点击下一页;</div>
54 55
     <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNum" :limit.sync="queryParams.pageSize"
55 56
       @pagination="getList" />
56 57
     <!--选择流程接收人-->
@@ -137,6 +138,8 @@ export default {
137 138
       this.filterList = this.todoList.filter(data => {
138 139
         if (data.title) {
139 140
           return !this.searchText || data.title.toLowerCase().includes(this.searchText.toLowerCase())
141
+        } else {
142
+          return data
140 143
         }
141 144
       })
142 145
     },
@@ -184,6 +187,9 @@ export default {
184 187
     // 跳转到处理页面
185 188
     handleProcess(row) {
186 189
       let path = this.getRoutePath(row);
190
+      if (this.$store.getters.userId == 1 && row.procDefName == '项目预算') {
191
+        path = '/applyForm/budgetApply'
192
+      }
187 193
       getProcessVariables(row.taskId).then(res => {
188 194
         this.$router.push({
189 195
           path: path,

+ 28
- 12
oa-ui/src/views/oa/staff/index.vue 查看文件

@@ -207,7 +207,7 @@
207 207
               </el-radio-group>
208 208
             </el-form-item>
209 209
             <el-form-item label="年龄" prop="age" v-if="form.userId != undefined">
210
-              {{ form.age + '岁' }}
210
+              {{ String(form.age).slice(0,2) + '岁' }}
211 211
             </el-form-item>
212 212
             <el-form-item label="手机号码" prop="phonenumber">
213 213
               <el-input v-model="form.phonenumber" placeholder="请输入手机号码" maxlength="11" />
@@ -221,17 +221,30 @@
221 221
             <el-form-item label="民族" prop="ethnic">
222 222
               <el-input v-model="form.ethnic" placeholder="请输入民族" />
223 223
             </el-form-item>
224
-            <el-form-item label="毕业学校" prop="graduateSchool">
225
-              <el-input v-model="form.graduateSchool" placeholder="请输入毕业学校" />
226
-            </el-form-item>
227
-            <el-form-item label="专业" prop="major">
228
-              <el-input v-model="form.major" placeholder="请输入专业" />
224
+            <el-form-item label="初始学历专业" prop="initialDegree">
225
+              <el-col :span="12">
226
+                <el-select v-model="form.initialDegree" placeholder="请选择" style="width:100%;" clearable>
227
+                  <el-option v-for="dict in dict.type.sys_user_degree" :key="dict.value" :label="dict.label"
228
+                  :value="dict.value" />
229
+                </el-select>
230
+              </el-col>
231
+              <el-col :span="12">
232
+                <el-input v-model="form.initialMajor" placeholder="请输入专业" />
233
+              </el-col>
229 234
             </el-form-item>
230
-            <el-form-item label="学历" prop="degree">
231
-              <el-select v-model="form.degree" clearable placeholder="请输入学历" style="width:100%;">
232
-                <el-option v-for="dict in dict.type.sys_user_degree" :key="dict.value" :label="dict.label"
235
+            <el-form-item label="最高学历专业" prop="degree">
236
+              <el-col :span="12">
237
+                <el-select v-model="form.degree" placeholder="请选择" style="width:100%;" clearable>
238
+                  <el-option v-for="dict in dict.type.sys_user_degree" :key="dict.value" :label="dict.label"
233 239
                   :value="dict.value" />
234
-              </el-select>
240
+                </el-select>
241
+              </el-col>
242
+              <el-col :span="12">
243
+                <el-input v-model="form.major" placeholder="请输入专业" />
244
+              </el-col>
245
+            </el-form-item>
246
+            <el-form-item label="毕业学校" prop="graduateSchool">
247
+              <el-input v-model="form.graduateSchool" placeholder="请输入毕业学校" />
235 248
             </el-form-item>
236 249
             <el-form-item label="家庭住址" prop="homePlace">
237 250
               <el-input type="textarea" v-model="form.homePlace" placeholder="请输入家庭住址" />
@@ -271,6 +284,9 @@
271 284
                   :value="dict.value" />
272 285
               </el-select>
273 286
             </el-form-item>
287
+            <el-form-item label="职称证书专业" prop="titleProfession">
288
+              <el-input type="textarea" v-model="form.titleProfession" placeholder="职称证书专业" />
289
+            </el-form-item>
274 290
             <el-form-item label="执业证书">
275 291
               <el-select v-model="form.certificates" multiple placeholder="请输入执业证书" style="width:100%;">
276 292
                 <el-option v-for="dict in dict.type.sys_user_certificates" :key="dict.value" :label="dict.label"
@@ -303,13 +319,13 @@
303 319
             </el-form-item>
304 320
             <el-form-item label="岗级" prop="postlevel">
305 321
               <el-col :span="12">
306
-                <el-select v-model="form.postLevel" placeholder="请选择" style="width:100%;">
322
+                <el-select v-model="form.postLevel" placeholder="请选择" style="width:100%;" clearable>
307 323
                   <el-option v-for="dict in dict.type.sys_user_postlevel" :key="dict.value" :label="dict.label"
308 324
                     :value="dict.value" />
309 325
                 </el-select>
310 326
               </el-col>
311 327
               <el-col :span="12">
312
-                <el-select v-model="form.salaryLevel" placeholder="请选择" style="width:100%;">
328
+                <el-select v-model="form.salaryLevel" placeholder="请选择" style="width:100%;" clearable>
313 329
                   <el-option v-for="dict in dict.type.sys_user_salarylevel" :key="dict.value" :label="dict.label"
314 330
                     :value="dict.value" />
315 331
                 </el-select>

+ 12
- 2
oa-ui/src/views/oa/staff/info.vue 查看文件

@@ -2,7 +2,7 @@
2 2
  * @Author: ysh
3 3
  * @Date: 2024-03-22 14:50:46
4 4
  * @LastEditors: Please set LastEditors
5
- * @LastEditTime: 2024-10-25 15:07:27
5
+ * @LastEditTime: 2025-02-26 17:09:25
6 6
 -->
7 7
 <template>
8 8
   <div class="bg" v-loading="loading">
@@ -196,10 +196,20 @@ export default {
196 196
               value: this.form.major
197 197
             },
198 198
             {
199
-              label: '学历:',
199
+              label: '最高学历:',
200 200
               icon: 'degree',
201 201
               value: this.selectDictLabel(this.dict.type.sys_user_degree, this.form.degree)
202 202
             },
203
+            {
204
+              label: '初始专业:',
205
+              icon: 'major',
206
+              value: this.form.initialMajor
207
+            },
208
+            {
209
+              label: '初始学历:',
210
+              icon: 'degree',
211
+              value: this.selectDictLabel(this.dict.type.sys_user_degree, this.form.initialDegree)
212
+            },
203 213
             {
204 214
               label: '合同签订:',
205 215
               icon: 'contractSign',

正在加载...
取消
保存