Переглянути джерело

完善调岗审批,新增招聘审批

qyx 1 тиждень тому
джерело
коміт
6cb014eec6

+ 5
- 1
oa-ui/src/views/flowable/form/components/conditionDisplay.vue Переглянути файл

@@ -65,6 +65,8 @@
65 65
       v-else-if="taskForm.procDefName == '职称评审'"></titles-form>
66 66
     <transfer-form :key="'titles' + taskForm.taskId" :taskForm="taskForm" :taskName="''" :isFlow="true"
67 67
       v-else-if="taskForm.procDefName == '调岗审批'"></transfer-form>
68
+    <recruit-form :key="'titles' + taskForm.taskId" :taskForm="taskForm" :taskName="''" :isFlow="true"
69
+      v-else-if="taskForm.procDefName == '招聘审批'"></recruit-form>
68 70
   </div>
69 71
 </template>
70 72
 
@@ -101,6 +103,7 @@ import StudyForm from "@/views/flowable/form//oa/studyForm.vue";
101 103
 import BudgetAdjust from '@/views/flowable/form/budget/adjust/budgetAdjust.vue';
102 104
 import TitlesForm from '@/views/flowable/form/oa/titlesForm.vue';
103 105
 import TransferForm from '@/views/flowable/form/oa/transferForm.vue';
106
+import recruitForm from '@/views/flowable/form/oa/recruitForm.vue';
104 107
 export default {
105 108
   props: {
106 109
     passingParam: {
@@ -143,7 +146,8 @@ export default {
143 146
     StudyForm,
144 147
     BudgetAdjust,
145 148
     TitlesForm,
146
-    TransferForm
149
+    TransferForm,
150
+    recruitForm
147 151
   },
148 152
   data() {
149 153
     return {

+ 5
- 1
oa-ui/src/views/flowable/form/components/detailDisplay.vue Переглянути файл

@@ -60,6 +60,8 @@
60 60
       @goBack="goBack"></titles-form>
61 61
     <transfer-form :taskName="taskName" :taskForm="taskForm" v-else-if="taskForm.procDefName == '调岗审批'"
62 62
       @goBack="goBack"></transfer-form>
63
+    <recruit-form :taskName="taskName" :taskForm="taskForm" v-else-if="taskForm.procDefName == '招聘审批'"
64
+      @goBack="goBack"></recruit-form>
63 65
   </div>
64 66
 </template>
65 67
 
@@ -96,6 +98,7 @@ import StudyForm from "@/views/flowable/form/oa/studyForm.vue";
96 98
 import AdjustIndex from '@/views/flowable/form/budget/adjust/adjustIndex.vue';
97 99
 import TitlesForm from '@/views/flowable/form/oa/titlesForm.vue';
98 100
 import TransferForm from '@/views/flowable/form/oa/transferForm.vue';
101
+import recruitForm from '@/views/flowable/form/oa/recruitForm.vue';
99 102
 export default {
100 103
   components: {
101 104
     ScTable,
@@ -129,7 +132,8 @@ export default {
129 132
     StudyForm,
130 133
     AdjustIndex,
131 134
     TitlesForm,
132
-    TransferForm
135
+    TransferForm,
136
+    recruitForm
133 137
   },
134 138
   props: {
135 139
     taskForm: {

+ 171
- 0
oa-ui/src/views/flowable/form/components/print/recruitPrint.vue Переглянути файл

@@ -0,0 +1,171 @@
1
+<template>
2
+  <div>
3
+    <div id="printRecruit">
4
+      <div class="text-center title">招聘申请表</div>
5
+      <table border="1">
6
+        <tr>
7
+          <td :colspan="2" class="fontbold">申请人</td>
8
+          <td :colspan="2">{{ getUserName(form.applier) }}</td>
9
+          <td :colspan="2" class="fontbold">申请部门</td>
10
+          <td :colspan="3">{{  getDeptName(form.applyDept) }}</td>
11
+        </tr>
12
+        <tr>
13
+          <td :colspan="2" class="fontbold">项目编号</td>
14
+          <td :colspan="2">{{ form.project.projectNumber ? form.project.projectNumber : '无' }}</td>
15
+          <td :colspan="2" class="fontbold">项目名称</td>
16
+          <td :colspan="3">{{ form.project.projectName ? form.project.projectName:'无' }}</td>
17
+        </tr>
18
+        <tr>
19
+          <td :colspan="2" class="fontbold">岗位名称</td>
20
+          <td :colspan="4">{{ form.postName }}</td>
21
+          <td :colspan="2" class="fontbold">招聘人数</td>
22
+          <td :colspan="1">{{ form.postNumber }}</td>
23
+        </tr>
24
+        <tr>
25
+          <td :colspan="2" class="fontbold">岗位职责</td>
26
+          <td :colspan="7" style="white-space: pre-wrap;"><div  class="minHeight">{{ form.duty }}</div></td>
27
+        </tr>
28
+        <tr>
29
+          <td :colspan="2" class="fontbold">任职资格</td>
30
+          <td :colspan="7" style="white-space: pre-wrap;"><div class="minHeight">{{ form.qualification }}</div></td>
31
+        </tr>
32
+        <tr>
33
+          <td :colspan="2" class="fontbold">薪资待遇</td>
34
+          <td :colspan="7" style="white-space: pre-wrap;"><div  class="minHeight">{{ form.wage }}</div></td>
35
+        </tr>
36
+        <tr>
37
+          <td :colspan="2" class="fontbold">部门意见</td>
38
+          <td :colspan="3"><div class="minHeight">{{ form.deptComment }}</div></td>
39
+          <td :colspan="2" style="text-align:left;min-width:120px;">签名:<span class="auditor">{{
40
+            getUserName(form.deptUserId) }}</span></td>
41
+          <td :colspan="2" style="text-align:left;width:240px;">日期:{{ form.deptTime }}</td>
42
+        </tr>
43
+        <tr>
44
+          <td :colspan="2" class="fontbold">分管审批意见</td>
45
+          <td :colspan="3"><div class="minHeight">{{ form.managerComment }}</div></td>
46
+          <td :colspan="2" style="text-align:left;min-width:120px;">
47
+            签名:<span class="auditor">{{ getUserName(form.managerUserId) }}</span>
48
+          </td>
49
+          <td :colspan="2" style="text-align:left;width:240px;">日期:{{ form.managerTime }}</td>
50
+        </tr>
51
+         <tr>
52
+          <td :colspan="2" class="fontbold">总经理审批意见</td>
53
+          <td :colspan="3"><div class="minHeight">{{ form.zjlComment }}</div></td>
54
+          <td :colspan="2" style="text-align:left;min-width:120px;">
55
+            签名:<span class="auditor">{{ getUserName(form.zjlUserId) }}</span>
56
+          </td>
57
+          <td :colspan="2" style="text-align:left;width:240px;">日期:{{ form.zjlTime }}</td>
58
+        </tr>
59
+      </table>
60
+    </div>
61
+    <div class="text-center mt20">
62
+      <el-button type="primary" v-print="print">确认打印</el-button>
63
+      <el-button @click="$emit('cancel')">取消</el-button>
64
+    </div>
65
+  </div>
66
+</template>
67
+
68
+<script>
69
+export default {
70
+  props: {
71
+    form: {
72
+      type: Object
73
+    }
74
+  },
75
+  data() {
76
+    return {
77
+      settleSum: {},
78
+      deptSettleList: [],
79
+      deductionsList: [],
80
+      actualSumSettle: '',
81
+      print: {
82
+        id: 'printRecruit',
83
+        popTitle: '招聘申请表', // 打印配置页上方标题
84
+        extraHead: '', //最上方的头部文字,附加在head标签上的额外标签,使用逗号分隔
85
+        preview: false, // 是否启动预览模式,默认是false(开启预览模式,可以先预览后打印)
86
+        previewTitle: '', // 打印预览的标题(开启预览模式后出现),
87
+        previewPrintBtnLabel: '', // 打印预览的标题的下方按钮文本,点击可进入打印(开启预览模式后出现)
88
+        zIndex: '', // 预览的窗口的z-index,默认是 20002(此值要高一些,这涉及到预览模式是否显示在最上面)
89
+        previewBeforeOpenCallback() { }, //预览窗口打开之前的callback(开启预览模式调用)
90
+        previewOpenCallback() { }, // 预览窗口打开之后的callback(开启预览模式调用)
91
+        beforeOpenCallback() { }, // 开启打印前的回调事件
92
+        openCallback() { }, // 调用打印之后的回调事件
93
+        closeCallback() { }, //关闭打印的回调事件(无法确定点击的是确认还是取消)
94
+        url: '',
95
+        standard: '',
96
+        extraCss: ''
97
+      }
98
+    }
99
+  },
100
+}
101
+</script>
102
+
103
+<style lang="scss" scoped>
104
+table {
105
+  /*边框*/
106
+  /* border: 1px solid black; */
107
+  width: 90%;
108
+  // text-align: center;
109
+  border-collapse: collapse;
110
+  margin: 0 auto;
111
+  table-layout: fixed; 
112
+
113
+  /*设置背景颜色*/
114
+  /* background-color: #bfa; */
115
+  td {
116
+    padding: 5px;
117
+    word-wrap: break-word;
118
+    word-break: break-all;
119
+    overflow-wrap: break-word;
120
+    // line-height: 30px;
121
+  }
122
+}
123
+
124
+.header {
125
+  font-family: '黑体';
126
+  font-size: 16px;
127
+  font-weight: bold;
128
+  line-height: 30px;
129
+}
130
+
131
+.bg {
132
+  background-color: #eee;
133
+  -webkit-print-color-adjust: exact;
134
+}
135
+
136
+.title {
137
+  font-family: '黑体';
138
+  font-size: 20px;
139
+  font-weight: bold;
140
+  line-height: 30px;
141
+}
142
+
143
+.fontbold {
144
+  font-weight: bold;
145
+  min-width: 150px;
146
+  text-align: center;
147
+}
148
+
149
+.conment-width {
150
+  // max-width: 200px;
151
+}
152
+
153
+
154
+@page {
155
+  size: auto;
156
+  /* 去除页脚 */
157
+  margin-bottom: 0;
158
+  // 横向A4
159
+  // size:A4 landscape;
160
+}
161
+
162
+@media print {
163
+  #print table {
164
+    width: 100%;
165
+  }
166
+}
167
+
168
+.minHeight{
169
+  min-height: 100px;
170
+}
171
+</style>

+ 199
- 0
oa-ui/src/views/flowable/form/components/print/transferPrint.vue Переглянути файл

@@ -0,0 +1,199 @@
1
+<template>
2
+  <div>
3
+    <div id="printTransfer">
4
+      <div class="text-center title">调岗申请表</div>
5
+      <table border="1">
6
+        <tr>
7
+          <td :colspan="1" class="fontbold">申请人</td>
8
+          <td :colspan="8">{{ getUserName(form.applier) }}</td>
9
+        </tr>
10
+        <tr>
11
+          <td :colspan="2" class="fontbold">调岗前所在部门</td>
12
+          <td :colspan="3">{{  getDeptName(form.beforeDeptId) }}</td>
13
+          <td :colspan="2" class="fontbold">拟调整岗位</td>
14
+          <td :colspan="2">{{ getPostById(form.beforePostId) }}</td>
15
+        </tr>
16
+        <tr>
17
+          <td :colspan="2" class="fontbold">调岗后所在部门</td>
18
+          <td :colspan="3">{{ getDeptName(form.afterDeptId) }}</td>
19
+          <td :colspan="2" class="fontbold">调岗后岗位</td>
20
+          <td :colspan="2">{{ getPostById(form.afterPostId) }}</td>
21
+        </tr>
22
+        <tr>
23
+          <td :colspan="1" class="fontbold">调岗前所在部门意见</td>
24
+          <td :colspan="4"><div class="minHeight">{{ form.beforeDeptComment }}</div></td>
25
+          <td :colspan="2" style="text-align:left;min-width:120px;">签名:<span class="auditor">{{
26
+            getUserName(form.beforeDeptLeader) }}</span></td>
27
+          <td :colspan="2" style="text-align:left;width:240px;">日期:{{ form.beforeDeptTime }}</td>
28
+        </tr>
29
+        <tr>
30
+          <td :colspan="1" class="fontbold">调岗后所在部门意见</td>
31
+          <td :colspan="4"><div class="minHeight">{{ form.afterDeptComment }}</div></td>
32
+          <td :colspan="2" style="text-align:left;min-width:120px;">签名:<span class="auditor">{{
33
+            getUserName(form.afterDeptLeader) }}</span></td>
34
+          <td :colspan="2" style="text-align:left;width:240px;">日期:{{ form.afterDeptTime }}</td>
35
+        </tr>
36
+        <tr>
37
+          <td :colspan="1" class="fontbold">综合事务部意见</td>
38
+          <td :colspan="4"><div class="minHeight">{{ form.zhComment }}</div></td>
39
+          <td :colspan="2" style="text-align:left;min-width:120px;">签名:<span class="auditor">{{
40
+            getUserName(form.zhUserId) }}</span></td>
41
+          <td :colspan="2" style="text-align:left;width:240px;">日期:{{ form.zhTime }}</td>
42
+        </tr>
43
+        <tr>
44
+          <td :colspan="1" class="fontbold">分管审批意见</td>
45
+          <td :colspan="4"><div class="minHeight">{{ form.managerComment }}</div></td>
46
+          <td :colspan="2" style="text-align:left;min-width:120px;">
47
+            签名:<span class="auditor">{{ getUserName(form.managerUserId) }}</span>
48
+          </td>
49
+          <td :colspan="2" style="text-align:left;width:240px;">日期:{{ form.managerTime }}</td>
50
+        </tr>
51
+         <tr>
52
+          <td :colspan="1" class="fontbold">总经理审批意见</td>
53
+          <td :colspan="4"><div class="minHeight">{{ form.zjlComment }}</div></td>
54
+          <td :colspan="2" style="text-align:left;min-width:120px;">
55
+            签名:<span class="auditor">{{ getUserName(form.zjlUserId) }}</span>
56
+          </td>
57
+          <td :colspan="2" style="text-align:left;width:240px;">日期:{{ form.zjlTime }}</td>
58
+        </tr>
59
+      </table>
60
+    </div>
61
+    <div class="text-center mt20">
62
+      <el-button type="primary" v-print="print">确认打印</el-button>
63
+      <el-button @click="$emit('cancel')">取消</el-button>
64
+    </div>
65
+  </div>
66
+</template>
67
+
68
+<script>
69
+
70
+import { getUser } from "@/api/system/user";
71
+export default {
72
+  props: {
73
+    form: {
74
+      type: Object
75
+    }
76
+  },
77
+  data() {
78
+    return {
79
+      settleSum: {},
80
+      deptSettleList: [],
81
+      deductionsList: [],
82
+      actualSumSettle: '',
83
+      postList: [],
84
+      print: {
85
+        id: 'printTransfer',
86
+        popTitle: '调岗申请表', // 打印配置页上方标题
87
+        extraHead: '', //最上方的头部文字,附加在head标签上的额外标签,使用逗号分隔
88
+        preview: false, // 是否启动预览模式,默认是false(开启预览模式,可以先预览后打印)
89
+        previewTitle: '', // 打印预览的标题(开启预览模式后出现),
90
+        previewPrintBtnLabel: '', // 打印预览的标题的下方按钮文本,点击可进入打印(开启预览模式后出现)
91
+        zIndex: '', // 预览的窗口的z-index,默认是 20002(此值要高一些,这涉及到预览模式是否显示在最上面)
92
+        previewBeforeOpenCallback() { }, //预览窗口打开之前的callback(开启预览模式调用)
93
+        previewOpenCallback() { }, // 预览窗口打开之后的callback(开启预览模式调用)
94
+        beforeOpenCallback() { }, // 开启打印前的回调事件
95
+        openCallback() { }, // 调用打印之后的回调事件
96
+        closeCallback() { }, //关闭打印的回调事件(无法确定点击的是确认还是取消)
97
+        url: '',
98
+        standard: '',
99
+        extraCss: ''
100
+      }
101
+    }
102
+  },
103
+  created() {
104
+    this.getList();
105
+  },
106
+  methods:{
107
+    getList() {
108
+        getUser(this.$store.state.user.id).then(response => {
109
+        this.postList = response.posts;
110
+      });
111
+    },
112
+    getPostById(val) {
113
+      let postname = [];
114
+      const postIds = val.split(",");
115
+      postIds.map(id => {
116
+        // 将字符ID转为数字进行比较
117
+        const numericId = Number(id);
118
+        const post = this.postList.find(post => post.postId == numericId);
119
+        if (post) {
120
+          postname.push(post.postName);
121
+        }
122
+      });
123
+
124
+      const displayText = postname.join("、");
125
+      return displayText;
126
+    },
127
+  }
128
+}
129
+</script>
130
+
131
+<style lang="scss" scoped>
132
+table {
133
+  /*边框*/
134
+  /* border: 1px solid black; */
135
+  width: 90%;
136
+  // text-align: center;
137
+  border-collapse: collapse;
138
+  margin: 0 auto;
139
+  table-layout: fixed; 
140
+
141
+  /*设置背景颜色*/
142
+  /* background-color: #bfa; */
143
+  td {
144
+    padding: 5px;
145
+    word-wrap: break-word;
146
+    word-break: break-all;
147
+    overflow-wrap: break-word;
148
+    // line-height: 30px;
149
+  }
150
+}
151
+
152
+.header {
153
+  font-family: '黑体';
154
+  font-size: 16px;
155
+  font-weight: bold;
156
+  line-height: 30px;
157
+}
158
+
159
+.bg {
160
+  background-color: #eee;
161
+  -webkit-print-color-adjust: exact;
162
+}
163
+
164
+.title {
165
+  font-family: '黑体';
166
+  font-size: 20px;
167
+  font-weight: bold;
168
+  line-height: 30px;
169
+}
170
+
171
+.fontbold {
172
+  font-weight: bold;
173
+  min-width: 150px;
174
+  text-align: center;
175
+}
176
+
177
+.conment-width {
178
+  // max-width: 200px;
179
+}
180
+
181
+
182
+@page {
183
+  size: auto;
184
+  /* 去除页脚 */
185
+  margin-bottom: 0;
186
+  // 横向A4
187
+  // size:A4 landscape;
188
+}
189
+
190
+@media print {
191
+  #print table {
192
+    width: 100%;
193
+  }
194
+}
195
+
196
+.minHeight{
197
+  min-height: 100px;
198
+}
199
+</style>

+ 481
- 0
oa-ui/src/views/flowable/form/oa/recruitForm.vue Переглянути файл

@@ -0,0 +1,481 @@
1
+<!--
2
+ * @Author: ysh
3
+ * @Date: 2025-08-18 10:59:25
4
+ * @LastEditors: Please set LastEditors
5
+ * @LastEditTime: 2025-08-19 16:33:56
6
+-->
7
+<template>
8
+  <div>
9
+    <el-row :gutter="20">
10
+      <el-col :span="isFlow ? 18 : 24" :xs="24">
11
+        <h2 style="text-align: center;">招聘申请表</h2>
12
+        <div class="mt20 mb20" v-if="showAlter">
13
+          <el-alert title="任务被退回,请修改后重新提交" type="error" :closable="false">
14
+            <return-comment :taskForm="taskForm" @isReturn="isReturn"></return-comment>
15
+          </el-alert>
16
+        </div>
17
+        <el-form :model="form" :rules="formRules" ref="form" label-width="175px" :disabled="taskName == ''"
18
+          class="mt20">
19
+          <el-divider></el-divider>
20
+            <!-- 申请部门 -->
21
+            <el-row :gutter="20" >
22
+                <el-col :md="7" :span="24">
23
+                    <el-form-item label="申请人:" prop="applier" >
24
+                        <span>{{ getUserName(form.applier) }}</span>
25
+                    </el-form-item>
26
+                </el-col>
27
+                <el-col :md="7" :span="24">
28
+                    <el-form-item label="申请部门:" prop="dept.deptName" >
29
+                        <span>{{ form.dept ? form.dept.deptName : '' }}</span>
30
+                    </el-form-item>
31
+                </el-col>
32
+                <el-col :md="7" :span="24">
33
+                    <el-form-item label="申请时间" prop="applyDate">
34
+                        <el-date-picker style="width:140px;" v-model="form.applyDate" value-format="yyyy-MM-dd" type="date"
35
+                    placeholder="选择日期" disabled>
36
+                    </el-date-picker>
37
+                    </el-form-item>
38
+                </el-col>
39
+            </el-row>
40
+            <!-- 项目 -->
41
+            <el-form-item label="项目招聘:" prop="isProject">
42
+                <el-switch v-model="isProject"  :disabled="taskName != '招聘申请'"></el-switch>
43
+              </el-form-item>
44
+            <el-form-item label="项目编号:" prop="projectId" v-if= this.isProject>
45
+                <el-button type="primary" size="mini" @click="openProject = true"
46
+                  v-if="taskName == '招聘申请'">选择项目</el-button>
47
+                <el-descriptions border v-if="isSelect" style="margin-top: 10px;" :column="1">
48
+                  <el-descriptions-item label="项目编号" label-class-name="my-label">{{ chooseProject.projectNumber
49
+                    }}</el-descriptions-item>
50
+                  <el-descriptions-item label="项目名称" label-class-name="my-label">{{ chooseProject.projectName
51
+                    }}</el-descriptions-item>
52
+                  <el-descriptions-item label="项目负责人" label-class-name="my-label">{{ chooseProject.projectLeaderUser ?
53
+                    chooseProject.projectLeaderUser.nickName : ''
54
+                    }}</el-descriptions-item>
55
+                  <el-descriptions-item label="承担部门" label-class-name="my-label">
56
+                    <el-tag size="small">{{ chooseProject.undertakingDeptName }}</el-tag>
57
+                  </el-descriptions-item>
58
+                  <el-descriptions-item label="项目类型" label-class-name="my-label">{{ chooseProject.projectType
59
+                    }}</el-descriptions-item>
60
+                </el-descriptions>
61
+              </el-form-item>
62
+            <!-- 需求岗位名称和人数 -->
63
+            <el-row :gutter="20" >
64
+                <el-col :md="12" :span="24">
65
+                  <el-form-item label="需求岗位名称:" prop="postName">
66
+                    <el-input type="textarea" :rows="1" placeholder="请输入需求岗位名称" v-model="form.postName"
67
+                      :disabled="taskName != '招聘申请'">
68
+                    </el-input>
69
+                  </el-form-item>
70
+                </el-col>
71
+                <el-col :md="12" :span="24">
72
+                  <el-form-item label="招聘人数:" prop="postNumber">
73
+                    <el-input-number v-model="form.postNumber" :min="1" :disabled="taskName != '招聘申请'"></el-input-number>
74
+                  </el-form-item>
75
+                </el-col>
76
+            </el-row>
77
+
78
+            <!-- 岗位职责 -->
79
+            <el-form-item label="岗位职责:" prop="duty" label-width="140px">
80
+                <el-input type="textarea" v-model="form.duty" :autosize="{ minRows: 4 }"
81
+                :disabled="taskName != '招聘申请'"></el-input>
82
+            </el-form-item>
83
+            <!-- 任职资格 -->
84
+            <el-form-item label="任职资格:" prop="qualification" label-width="140px">
85
+                <el-input type="textarea" v-model="form.qualification" :autosize="{ minRows: 4 }"
86
+                :disabled="taskName != '招聘申请'"></el-input>
87
+            </el-form-item>
88
+            <!-- 薪资待遇 -->
89
+            <el-form-item label="薪资待遇:" prop="wage" label-width="140px">
90
+                <el-input type="textarea" v-model="form.wage" :autosize="{ minRows: 4 }"
91
+                :disabled="taskName != '招聘申请'"></el-input>
92
+            </el-form-item>
93
+
94
+            <el-divider></el-divider>
95
+
96
+          <!-- 部门(项目)负责人意见 -->
97
+            <el-form-item label="部门意见:" prop="deptComment" label-width="130px">
98
+                <el-input type="textarea" v-model="form.deptComment" :autosize="{ minRows: 4 }"
99
+                :disabled="taskName != '部门审批'"></el-input>
100
+                <auditor-row ref="deptRef" :isCurrent="taskName == '部门审批'"
101
+                :signature="form.deptUserId ? form.deptUserId : null" :signTime="form.deptTime"></auditor-row>
102
+            </el-form-item>
103
+            <!-- 分管审核意见: -->
104
+            <el-form-item label="分管审批意见:" prop="managerComment" label-width="130px">
105
+                <el-input type="textarea" v-model="form.managerComment" :autosize="{ minRows: 4 }"
106
+                :disabled="taskName != '分管审批'"></el-input>
107
+                <auditor-row ref="fgRef" :isCurrent="taskName == '分管审批'"
108
+                :signature="form.managerUserId ? form.managerUserId : null" :signTime="form.managerTime"></auditor-row>
109
+            </el-form-item>
110
+            <!-- 总经理审批意见: -->
111
+            <el-form-item label="总经理审批意见:" prop="zjlComment" label-width="130px">
112
+                <el-input type="textarea" v-model="form.zjlComment" :autosize="{ minRows: 4 }"
113
+                :disabled="taskName != '总经理审批'"></el-input>
114
+                <auditor-row ref="zjlRef" :isCurrent="taskName == '总经理审批'"
115
+                :signature="form.zjlUserId ? form.zjlUserId : null" :signTime="form.zjlTime"></auditor-row>
116
+            </el-form-item>
117
+        </el-form>
118
+
119
+        <!-- 操作按钮 -->
120
+        <div style="text-align: center;" v-if="taskName" class="mt30">
121
+          <el-button type="warning" @click="saveDraft">保存</el-button>
122
+          <el-button type="danger" @click="returnOpen = true" v-if="taskName != '调岗申请'">退回</el-button>
123
+          <el-button type="primary" @click="submitForm">{{ taskName != '总经理审批' ? '提交下一个流程' : '批准' }}</el-button>
124
+        </div>
125
+      </el-col>
126
+      <el-col :span="6" :xs="24" v-if="isFlow">
127
+        <el-card>
128
+          <h2 style="text-align: center;">流程进度</h2>
129
+          <div>
130
+            <flow :flowData="flowData" />
131
+          </div>
132
+        </el-card>
133
+      </el-col>
134
+    </el-row>
135
+
136
+    <el-dialog title="退回" :visible.sync="returnOpen" width="40%" append-to-body>
137
+      <return-btn :taskForm="taskForm" :comment="commentByRole()" @goBack="$emit('goBack')" @saves=""
138
+        @cancel="returnOpen = false"></return-btn>
139
+    </el-dialog>
140
+    <el-dialog title="选择项目" :visible.sync="openProject" width="70%" append-to-body>
141
+      <project-choose @chooseProject="confirmProject"></project-choose>
142
+    </el-dialog>
143
+  </div>
144
+</template>
145
+
146
+<script>
147
+import flow from '@/views/flowable/task/todo/detail/flow';
148
+import { getProject } from "@/api/oa/project/project";
149
+import { flowXmlAndNode } from "@/api/flowable/definition";
150
+import { listRecruit, getRecruit, delRecruit, addRecruit, updateRecruit } from "@/api/oa/recruit/recruit";
151
+import { complete, getNextFlowNode } from "@/api/flowable/todo";
152
+import ReturnComment from "@/views/flowable/form/components/flowBtn/returnComment.vue";
153
+import ReturnBtn from "@/views/flowable/form/components/flowBtn/returnBtn.vue";
154
+import { getUsersDeptLeaderByDept, getUsersManageLeaderByDept, getUserByPost } from '@/api/system/post';
155
+import AuditorRow from '@/views/flowable/form/components/auditorRow.vue';
156
+import projectChoose from '@/views/flowable/form/components/chooseProject.vue';
157
+export default {
158
+  components: {
159
+    flow,
160
+    ReturnComment,
161
+    ReturnBtn,
162
+    AuditorRow,
163
+    projectChoose
164
+  },
165
+  props: {
166
+    taskName: {
167
+      type: String,
168
+      required: true
169
+    },
170
+    taskForm: {
171
+      type: Object,
172
+      required: true
173
+    },
174
+    isFlow: {
175
+      type: Boolean,
176
+      default: true
177
+    }
178
+  },
179
+  watch: {
180
+    isProject(newVal, oldVal) {
181
+      if (newVal === false) {
182
+        this.form.projectId = ''; 
183
+        this.isSelect = false;
184
+      }
185
+    }
186
+  },
187
+  created() {
188
+    if (this.isFlow)
189
+      flowXmlAndNode({ procInsId: this.taskForm.procInsId, deployId: this.taskForm.deployId }).then(res => {
190
+        this.flowData = res.data;
191
+      })
192
+    // 初始化表单数据
193
+    this.initFormData()
194
+  },
195
+  data() {
196
+    return {
197
+      baseUrl: process.env.VUE_APP_BASE_API,
198
+      flowData: {},
199
+      isEdit: false,
200
+      form: {
201
+        dept: {
202
+          deptName: '',
203
+        },
204
+      },
205
+      rules: {},
206
+      returnOpen: false,
207
+      showAlter: true,
208
+      openProject:false,
209
+      isSelect:false,
210
+      isProject: false,
211
+    }
212
+  },
213
+  computed: {
214
+    // 动态生成验证规则
215
+    formRules() {
216
+      if (this.taskName == '') {
217
+        return {}; // 当taskName为空时,不进行验证
218
+     }else if(this.taskName == '招聘申请'){
219
+        return {
220
+          postName: [
221
+            { required: true, message: '请输入需求岗位名称', trigger: 'blur' }
222
+          ],
223
+          postNumber: [
224
+            { required: true, message: '请选择招聘人数', trigger: 'change' }
225
+          ],
226
+          duty: [
227
+            { required: true, message: '请输入岗位职责', trigger: 'blur' }
228
+          ],
229
+          qualification: [
230
+            { required: true, message: '请输入任职资格', trigger: 'blur' }
231
+          ],
232
+          wage: [
233
+            { required: true, message: '请输入薪资待遇', trigger: 'blur' }
234
+          ]
235
+     }}else if(this.taskName=='部门审批'){
236
+        return{
237
+          deptComment: [
238
+            { required: true, message: '请填写审批意见', trigger: 'blur' }
239
+          ]
240
+     }}else if(this.taskName=='分管审批'){
241
+        return{
242
+          managerComment: [
243
+            { required: true, message: '请填写审批意见', trigger: 'blur' }
244
+          ]
245
+     }}else if(this.taskName=='总经理审批'){
246
+        return{
247
+          zjlComment: [
248
+            { required: true, message: '请填写审批意见', trigger: 'blur' }
249
+          ]
250
+     }}
251
+    }
252
+  },
253
+  methods: {
254
+    // 初始化表单数据
255
+    initFormData() {
256
+      getRecruit(this.taskForm.formId).then(res => {
257
+        if (res.data) {
258
+          this.form = res.data;
259
+          this.isEdit = true;
260
+          if (this.form.projectId) {
261
+            getProject(this.form.projectId).then(response => {
262
+              this.chooseProject = response.data;
263
+              this.isSelect = true;
264
+              this.isProject = true;
265
+            })
266
+          }
267
+        } else {
268
+          this.form.applier = this.$store.state.user.id;
269
+          this.form.applyDate = this.parseTime(new Date(), '{y}-{m}-{d}');
270
+          this.form.applyDept = this.$store.getters.deptId;
271
+          this.form.dept.deptName = this.$store.getters.deptName;
272
+        }
273
+      })
274
+    },
275
+    // 保存
276
+    async saveDraft() {
277
+      if (this.taskName == '') {
278
+        this.$message.info('当前为只读模式,无法保存')
279
+        return;
280
+      }
281
+      if (this.taskName == '部门审批') {
282
+        this.form.deptUserId = this.$refs.deptRef.localSignatureUserId;
283
+        this.form.deptTime = this.$refs.deptRef.loaclSignTime;
284
+      } else if (this.taskName == '分管审批') {
285
+        this.form.managerUserId = this.$refs.fgRef.localSignatureUserId;
286
+        this.form.managerTime = this.$refs.fgRef.loaclSignTime;
287
+      } else if (this.taskName == '总经理审批') {
288
+        this.form.zjlUserId = this.$refs.zjlRef.localSignatureUserId;
289
+        this.form.zjlTime = this.$refs.zjlRef.loaclSignTime;
290
+      }
291
+
292
+      if (this.isEdit) {
293
+        await updateRecruit(this.form);
294
+      } else {
295
+        this.form.recruitId = this.taskForm.formId;
296
+        await addRecruit(this.form);
297
+        this.isEdit = true;
298
+      }
299
+      this.$message.success('保存成功')
300
+    },
301
+    // 提交表单
302
+    submitForm() {
303
+      if (this.taskName == '') {
304
+        this.$message.info('当前为只读模式,无法提交')
305
+        return;
306
+      }
307
+
308
+      this.$refs.form.validate((valid) => {
309
+        if (valid) {
310
+          let msg = '确认提交招聘申请表?';
311
+          if (this.taskName == '总经理审批') {
312
+            msg = '最后一个节点,提交将无法修改,是否确认提交?';
313
+          }
314
+          this.$confirm(msg, '提示', {
315
+            confirmButtonText: '确定',
316
+            cancelButtonText: '取消',
317
+            type: 'warning'
318
+          }).then(() => {
319
+            this.submitFlow()
320
+          }).catch(() => {
321
+            this.$message.info('已取消提交')
322
+          })
323
+        } else {
324
+          this.$message.error('请完善表单信息')
325
+          return false
326
+        }
327
+      })
328
+    },
329
+    async submitFlow() {
330
+      await this.saveDraft();
331
+
332
+      if (this.taskName == '招聘申请') {  
333
+        const res = await getUsersDeptLeaderByDept({ deptId: this.$store.getters.deptId });
334
+        this.$set(this.taskForm.variables, "approval", res.data.userId);
335
+      }  else if (this.taskName == '部门审批') {
336
+        let managerList = []
337
+        let result = await getUsersManageLeaderByDept({ deptId: this.form.applyDept });
338
+        result.data.forEach(element => {managerList.push(element.userId)});
339
+        this.$set(this.taskForm.variables, "approvalList", managerList);
340
+      } else if (this.taskName == '分管审批') {
341
+        const res = await getUserByPost({ postName: "总经理" });
342
+        this.$set(this.taskForm.variables, "approval", res.data[0].userId);
343
+      }
344
+
345
+      await getNextFlowNode({ taskId: this.taskForm.taskId });
346
+      const response = await complete(this.taskForm);
347
+      this.$modal.msgSuccess(response.msg);
348
+      this.$emit('goBack');
349
+    },
350
+    confirmProject(val) {
351
+      if (val.length > 1) {
352
+        this.$message.error('请选择一个项目');
353
+        return
354
+      } else if (val.length == 1) {
355
+        this.chooseProject = val[0]
356
+        this.isSelect = true
357
+        this.$set(this.form, 'projectId', val[0].projectId);
358
+      }
359
+      this.openProject = false;
360
+    },
361
+    isReturn(val) {
362
+      this.showAlter = val;
363
+    },
364
+    commentByRole() {
365
+      if (this.taskName == '部门审批') {
366
+        return this.form.deptComment
367
+      } else if (this.taskName == '分管审批') {
368
+        return this.form.managerComment
369
+      } else if (this.taskName == '总经理审批') {
370
+        return this.form.zjlComment
371
+      } 
372
+    },
373
+  }
374
+}
375
+</script>
376
+
377
+<style lang="scss" scoped>
378
+@import "@/assets/styles/element-reset.scss";
379
+
380
+.process-steps {
381
+  margin: 20px 0;
382
+  padding: 20px;
383
+  background: #f8f9fa;
384
+  border-radius: 8px;
385
+}
386
+
387
+.current-step-info {
388
+  margin: 20px 0;
389
+
390
+  .step-header {
391
+    display: flex;
392
+    align-items: center;
393
+    margin-bottom: 8px;
394
+
395
+    i {
396
+      color: #409eff;
397
+      margin-right: 8px;
398
+      font-size: 16px;
399
+    }
400
+
401
+    .step-title {
402
+      font-weight: bold;
403
+      color: #303133;
404
+      font-size: 16px;
405
+    }
406
+  }
407
+
408
+  .step-description {
409
+    color: #606266;
410
+    font-size: 14px;
411
+    line-height: 1.5;
412
+  }
413
+}
414
+
415
+.form-section {
416
+  margin-bottom: 30px;
417
+  padding: 20px;
418
+  border: 1px solid #e4e7ed;
419
+  border-radius: 8px;
420
+  background: #fff;
421
+
422
+  .section-title {
423
+    display: flex;
424
+    align-items: center;
425
+    margin-bottom: 20px;
426
+    padding-bottom: 10px;
427
+    border-bottom: 2px solid #409eff;
428
+
429
+    i {
430
+      color: #409eff;
431
+      margin-right: 8px;
432
+      font-size: 18px;
433
+    }
434
+
435
+    svg {
436
+      color: #409eff;
437
+      margin-right: 8px;
438
+      font-size: 18px;
439
+    }
440
+
441
+    span {
442
+      font-size: 16px;
443
+      font-weight: bold;
444
+      color: #303133;
445
+    }
446
+  }
447
+}
448
+
449
+.sign {
450
+  display: flex;
451
+  justify-content: flex-end;
452
+  align-items: center;
453
+  padding-right: 80px;
454
+  line-height: 30px;
455
+  /* 如果需要垂直居中 */
456
+}
457
+
458
+.mt20 {
459
+  margin-top: 20px;
460
+}
461
+
462
+.mt30 {
463
+  margin-top: 30px;
464
+}
465
+
466
+.mb20 {
467
+  margin-bottom: 20px;
468
+}
469
+
470
+.ml20 {
471
+  margin-left: 20px;
472
+}
473
+
474
+.mr20 {
475
+  margin-right: 20px;
476
+}
477
+
478
+.mt10 {
479
+  margin-top: 10px;
480
+}
481
+</style>

+ 59
- 45
oa-ui/src/views/flowable/form/oa/transferForm.vue Переглянути файл

@@ -16,11 +16,12 @@
16 16
         </div>
17 17
         <el-form :model="form" :rules="formRules" ref="form" label-width="175px" :disabled="taskName == ''"
18 18
           class="mt20">
19
+          <el-divider></el-divider>
19 20
             <!-- 申请人 -->
20 21
             <el-row :gutter="20" >
21 22
                 <el-col :md="12" :span="24">
22 23
                     <el-form-item label="申请人:" prop="applier" >
23
-                        <span class="auditor">{{ getUserName(form.applier) }}</span>
24
+                        <span>{{ getUserName(form.applier) }}</span>
24 25
                     </el-form-item>
25 26
                 </el-col>
26 27
                 <el-col :md="12" :span="24">
@@ -36,11 +37,11 @@
36 37
             <el-row :gutter="20" >
37 38
                 <el-col :md="12" :span="24">
38 39
                     <el-form-item label="调整前所在部门:" prop="beforeDeptId" :disabled="taskName != '调岗申请'">
39
-                    {{ getDept(form) }}
40
+                    {{ getDeptName(form.beforeDeptId) }}
40 41
                     </el-form-item>
41 42
                 </el-col>
42 43
                 <el-col :md="12" :span="24">
43
-                    <el-form-item label="调整前所在岗位:" prop="postList" >
44
+                    <el-form-item label="调整岗位:" prop="postList" >
44 45
                     <el-select v-model="postList.beforePostList" placeholder="请选择岗位" style="width:100%;" multiple :disabled="taskName != '调岗申请'" @change="$forceUpdate()">
45 46
                         <el-option v-for="item in beforepostOptions" :key="item.postId" :label="item.postName" :value="item.postId">
46 47
                         </el-option>
@@ -60,7 +61,7 @@
60 61
                     </el-form-item>
61 62
                 </el-col>
62 63
                 <el-col :md="12" :span="24">
63
-                    <el-form-item label="调整后所在岗位:" prop="postList">
64
+                    <el-form-item label="调整后岗位:" prop="postList">
64 65
                     <el-select v-model="postList.afterPostList" placeholder="请选择岗位" style="width:100%;" multiple :disabled="taskName != '调岗申请'" @change="$forceUpdate()">
65 66
                         <el-option v-for="item in allpostOptions" :key="item.postId" :label="item.postName" :value="item.postId">
66 67
                         </el-option>
@@ -72,35 +73,35 @@
72 73
             <el-divider></el-divider>
73 74
 
74 75
           <!-- 调整前所在部门意见 -->
75
-            <el-form-item label="调整前所在部门意见" prop="beforeDeptComment" label-width="140px">
76
+            <el-form-item label="调整前所在部门意见:" prop="beforeDeptComment" label-width="160px">
76 77
                 <el-input type="textarea" v-model="form.beforeDeptComment" :autosize="{ minRows: 4 }"
77 78
                 :disabled="taskName != '调前部门审批'"></el-input>
78 79
                 <auditor-row ref="beforeRef" :isCurrent="taskName == '调前部门审批'"
79 80
                 :signature="form.beforeDeptLeader ? form.beforeDeptLeader : null" :signTime="form.beforeDeptTime"></auditor-row>
80 81
             </el-form-item>
81 82
             <!-- 调整后所在部门意见 -->
82
-            <el-form-item label="调整后所在部门意见" prop="afterDeptComment" label-width="140px">
83
+            <el-form-item label="调整后所在部门意见:" prop="afterDeptComment" label-width="160px">
83 84
                 <el-input type="textarea" v-model="form.afterDeptComment" :autosize="{ minRows: 4 }"
84 85
                 :disabled="taskName != '调后部门审批'"></el-input>
85 86
                 <auditor-row ref="afterRef" :isCurrent="taskName == '调后部门审批'"
86 87
                 :signature="form.afterDeptLeader ? form.afterDeptLeader : null" :signTime="form.afterDeptTime"></auditor-row>
87 88
             </el-form-item>
88 89
             <!-- 综合事务部意见: -->
89
-            <el-form-item label="综合事务部意见:" prop="zhComment" label-width="130px">
90
+            <el-form-item label="综合事务部意见:" prop="zhComment" label-width="160px">
90 91
                 <el-input type="textarea" v-model="form.zhComment" :autosize="{ minRows: 4 }"
91 92
                 :disabled="taskName != '综合事务部审批'"></el-input>
92 93
                 <auditor-row ref="zhRef" :isCurrent="taskName == '综合事务部审批'"
93 94
                 :signature="form.zhUserId ? form.zhUserId : null" :signTime="form.zhTime"></auditor-row>
94 95
             </el-form-item>
95 96
             <!-- 分管审核意见: -->
96
-            <el-form-item label="分管审核意见:" prop="managerComment" label-width="130px">
97
+            <el-form-item label="分管审核意见:" prop="managerComment" label-width="160px">
97 98
                 <el-input type="textarea" v-model="form.managerComment" :autosize="{ minRows: 4 }"
98 99
                 :disabled="taskName != '分管审批'"></el-input>
99 100
                 <auditor-row ref="fgRef" :isCurrent="taskName == '分管审批'"
100 101
                 :signature="form.managerUserId ? form.managerUserId : null" :signTime="form.managerTime"></auditor-row>
101 102
             </el-form-item>
102 103
             <!-- 总经理审批意见: -->
103
-            <el-form-item label="总经理审批意见:" prop="zjlComment" label-width="130px">
104
+            <el-form-item label="总经理意见:" prop="zjlComment" label-width="160px">
104 105
                 <el-input type="textarea" v-model="form.zjlComment" :autosize="{ minRows: 4 }"
105 106
                 :disabled="taskName != '总经理审批'"></el-input>
106 107
                 <auditor-row ref="zjlRef" :isCurrent="taskName == '总经理审批'"
@@ -110,7 +111,6 @@
110 111
 
111 112
         <!-- 操作按钮 -->
112 113
         <div style="text-align: center;" v-if="taskName" class="mt30">
113
-          <el-button type="warning" @click="saveDraft">保存</el-button>
114 114
           <el-button type="danger" @click="returnOpen = true" v-if="taskName != '调岗申请'">退回</el-button>
115 115
           <el-button type="primary" @click="submitForm">{{ taskName != '总经理审批' ? '提交下一个流程' : '批准' }}</el-button>
116 116
         </div>
@@ -141,7 +141,7 @@ import { allocatedUserList } from "@/api/system/role";
141 141
 import ReturnComment from "@/views/flowable/form/components/flowBtn/returnComment.vue";
142 142
 import ReturnBtn from "@/views/flowable/form/components/flowBtn/returnBtn.vue";
143 143
 import { getUser, updateUser } from "@/api/system/user";
144
-import { getUsersDeptLeaderByDept, getUsersManageLeaderByDept, getUserByPost,delPost } from '@/api/system/post';
144
+import { getUsersDeptLeaderByDept, getUsersManageLeaderByDept, getUserByPost } from '@/api/system/post';
145 145
 import AuditorRow from '@/views/flowable/form/components/auditorRow.vue';
146 146
 export default {
147 147
   components: {
@@ -189,6 +189,9 @@ export default {
189 189
         afterPostList: [],
190 190
       },
191 191
       form: {
192
+        dept: {
193
+          deptName: '',
194
+        },
192 195
         transferId: null,
193 196
         applier: null,
194 197
         applyDate: null,
@@ -222,19 +225,43 @@ export default {
222 225
     formRules() {
223 226
       if (this.taskName == '') {
224 227
         return {}; // 当taskName为空时,不进行验证
225
-      }
226
-
227
-      return {
228
-        beforePostList: [
229
-          { required: true, message: '请选择调整前岗位', trigger: 'change', type: 'array'  }
230
-        ],
231
-        afterDeptId: [
232
-          { required: true, message: '请选择调整后部门', trigger: 'change' }
233
-        ],
234
-        afterPostList: [
235
-          { required: true, message: '请选择调整后岗位', trigger: 'change', type: 'array' }
236
-        ]
237
-      };
228
+     }else if(this.taskName == '调岗申请'){
229
+        return {
230
+          beforePostList: [
231
+            { required: true, message: '请选择调整前岗位', trigger: 'change', type: 'array'  }
232
+          ],
233
+          afterDeptId: [
234
+            { required: true, message: '请选择调整后部门', trigger: 'change' }
235
+          ],
236
+          afterPostList: [
237
+            { required: true, message: '请选择调整后岗位', trigger: 'change', type: 'array' }
238
+          ]
239
+     }}else if(this.taskName=='调前部门审批'){
240
+        return{
241
+          beforeDeptComment: [
242
+            { required: true, message: '请填写审批意见', trigger: 'blur'}
243
+          ]
244
+     }}else if(this.taskName=='调后部门审批'){
245
+        return{
246
+          afterDeptComment: [
247
+            { required: true, message: '请填写审批意见', trigger: 'blur' }
248
+          ]
249
+     }}else if(this.taskName=='综合事务部审批'){
250
+        return{
251
+          zhComment: [
252
+            { required: true, message: '请填写审批意见', trigger: 'blur' }
253
+          ]
254
+     }}else if(this.taskName=='分管审批'){
255
+        return{
256
+          managerComment: [
257
+            { required: true, message: '请填写审批意见', trigger: 'blur' }
258
+          ]
259
+     }}else if(this.taskName=='总经理审批'){
260
+        return{
261
+          zjlComment: [
262
+            { required: true, message: '请填写审批意见', trigger: 'blur' }
263
+          ]
264
+     }}
238 265
     }
239 266
   },
240 267
   methods: {
@@ -251,6 +278,8 @@ export default {
251 278
         } else {
252 279
           this.form.applier = this.$store.state.user.id;
253 280
           this.form.applyDate = this.parseTime(new Date(), '{y}-{m}-{d}');
281
+          this.form.dept.deptName = this.$store.getters.deptName;
282
+          this.form.beforeDeptId=this.$store.getters.deptId;
254 283
         }
255 284
       })
256 285
     },
@@ -319,7 +348,7 @@ export default {
319 348
     },
320 349
     async submitFlow() {
321 350
       await this.saveDraft();
322
-
351
+      
323 352
       if (this.taskName == '调岗申请') {  
324 353
         const res = await getUsersDeptLeaderByDept({ deptId: this.form.beforeDeptId });
325 354
         this.$set(this.taskForm.variables, "approval", res.data.userId);
@@ -330,8 +359,10 @@ export default {
330 359
         const res = await getUsersDeptLeaderByDept({ deptId: 104 });
331 360
         this.$set(this.taskForm.variables, "approval", res.data.userId);
332 361
       } else if (this.taskName == '综合事务部审批') {
333
-        let res = await getUsersManageLeaderByDept({ deptId: this.form.afterDeptId });
334
-        this.$set(this.taskForm.variables, "approval", res.data[0].userId);
362
+        let managerList = []
363
+        let result = await getUsersManageLeaderByDept({ deptId: this.form.afterDeptId });
364
+        result.data.forEach(element => {managerList.push(element.userId)});
365
+        this.$set(this.taskForm.variables, "approvalList", managerList);
335 366
       } else if (this.taskName == '分管审批') {
336 367
         const res = await getUserByPost({ postName: "总经理" });
337 368
         this.$set(this.taskForm.variables, "approval", res.data[0].userId);
@@ -360,29 +391,11 @@ export default {
360 391
         });
361 392
       }else{
362 393
         getUser(this.$store.state.user.id).then(response => {
363
-          console.log(this.$store.state.user.id);
364
-          console.log(response);
365 394
           this.allpostOptions = response.posts;
366 395
           this.beforepostOptions = response.posts;
367 396
         });
368 397
       }
369 398
     },
370
-    //获取部门
371
-    getDept(val){
372
-      if(this.taskName=="调岗申请"){
373
-        for (let p of this.$store.state.user.deptList) {
374
-        if (p.deptId == this.$store.state.user.deptId) {
375
-          this.form.beforeDeptId = p.deptId;
376
-          return p.deptName;
377
-        }}
378
-      }else{
379
-        for (let p of this.$store.state.user.deptList) {
380
-        if (p.deptId == val.beforeDeptId) {
381
-          return p.deptName;
382
-        }
383
-      }
384
-      }
385
-    },
386 399
     //转换岗位id格式
387 400
     postIdConvert(val){
388 401
       // 处理空值
@@ -405,6 +418,7 @@ export default {
405 418
     async updateUserDeptAndPost(){
406 419
       const userinfo = await getUser(Number(this.form.applier));
407 420
       userinfo.data.deptId = this.form.afterDeptId;
421
+      userinfo.data.roleIds = userinfo.roleIds;
408 422
       userinfo.data.postIds = this.form.afterPostId.split(',').map(item => Number(item.trim())).filter(num => !isNaN(num));
409 423
       updateUser(userinfo.data).then(response => {
410 424
        this.$modal.msgSuccess("修改成功");

+ 53
- 332
oa-ui/src/views/oa/recruit/index.vue Переглянути файл

@@ -2,148 +2,26 @@
2 2
   <div class="app-container">
3 3
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4 4
       <el-form-item label="申请人" prop="applier">
5
-        <el-input
6
-          v-model="queryParams.applier"
7
-          placeholder="请输入申请人"
8
-          clearable
9
-          @keyup.enter.native="handleQuery"
10
-        />
5
+        <el-select v-model="queryParams.applier" filterable clearable @change="handleQuery">
6
+          <el-option v-for="item in $store.state.user.userList" :key="item.userId" :label="item.nickName"
7
+            :value="item.userId">
8
+          </el-option>
9
+        </el-select>
11 10
       </el-form-item>
12 11
       <el-form-item label="申请部门" prop="applyDept">
13
-        <el-input
14
-          v-model="queryParams.applyDept"
15
-          placeholder="请输入申请部门"
16
-          clearable
17
-          @keyup.enter.native="handleQuery"
18
-        />
19
-      </el-form-item>
20
-      <el-form-item label="项目id" prop="projectId">
21
-        <el-input
22
-          v-model="queryParams.projectId"
23
-          placeholder="请输入项目id"
24
-          clearable
25
-          @keyup.enter.native="handleQuery"
26
-        />
27
-      </el-form-item>
28
-      <el-form-item label="申请日期" prop="applyDate">
29
-        <el-date-picker clearable
30
-          v-model="queryParams.applyDate"
31
-          type="date"
32
-          value-format="yyyy-MM-dd"
33
-          placeholder="请选择申请日期">
34
-        </el-date-picker>
35
-      </el-form-item>
36
-      <el-form-item label="岗位名称" prop="postName">
37
-        <el-input
38
-          v-model="queryParams.postName"
39
-          placeholder="请输入岗位名称"
40
-          clearable
41
-          @keyup.enter.native="handleQuery"
42
-        />
43
-      </el-form-item>
44
-      <el-form-item label="岗位人数" prop="postNumber">
45
-        <el-input
46
-          v-model="queryParams.postNumber"
47
-          placeholder="请输入岗位人数"
48
-          clearable
49
-          @keyup.enter.native="handleQuery"
50
-        />
51
-      </el-form-item>
52
-      <el-form-item label="岗位职责" prop="duty">
53
-        <el-input
54
-          v-model="queryParams.duty"
55
-          placeholder="请输入岗位职责"
56
-          clearable
57
-          @keyup.enter.native="handleQuery"
58
-        />
59
-      </el-form-item>
60
-      <el-form-item label="任职资格" prop="qualification">
61
-        <el-input
62
-          v-model="queryParams.qualification"
63
-          placeholder="请输入任职资格"
64
-          clearable
65
-          @keyup.enter.native="handleQuery"
66
-        />
67
-      </el-form-item>
68
-      <el-form-item label="薪酬待遇" prop="wage">
69
-        <el-input
70
-          v-model="queryParams.wage"
71
-          placeholder="请输入薪酬待遇"
72
-          clearable
73
-          @keyup.enter.native="handleQuery"
74
-        />
75
-      </el-form-item>
76
-      <el-form-item label="部门意见" prop="deptComment">
77
-        <el-input
78
-          v-model="queryParams.deptComment"
79
-          placeholder="请输入部门意见"
80
-          clearable
81
-          @keyup.enter.native="handleQuery"
82
-        />
83
-      </el-form-item>
84
-      <el-form-item label="部门负责人" prop="deptLeader">
85
-        <el-input
86
-          v-model="queryParams.deptLeader"
87
-          placeholder="请输入部门负责人"
88
-          clearable
89
-          @keyup.enter.native="handleQuery"
90
-        />
91
-      </el-form-item>
92
-      <el-form-item label="部门审批时间" prop="deptTime">
93
-        <el-date-picker clearable
94
-          v-model="queryParams.deptTime"
95
-          type="date"
96
-          value-format="yyyy-MM-dd"
97
-          placeholder="请选择部门审批时间">
98
-        </el-date-picker>
99
-      </el-form-item>
100
-      <el-form-item label="分管领导意见" prop="managerComment">
101
-        <el-input
102
-          v-model="queryParams.managerComment"
103
-          placeholder="请输入分管领导意见"
104
-          clearable
105
-          @keyup.enter.native="handleQuery"
106
-        />
107
-      </el-form-item>
108
-      <el-form-item label="分管领导" prop="managerLeader">
109
-        <el-input
110
-          v-model="queryParams.managerLeader"
111
-          placeholder="请输入分管领导"
112
-          clearable
113
-          @keyup.enter.native="handleQuery"
114
-        />
115
-      </el-form-item>
116
-      <el-form-item label="分管领导审批时间" prop="managerTime">
117
-        <el-date-picker clearable
118
-          v-model="queryParams.managerTime"
119
-          type="date"
120
-          value-format="yyyy-MM-dd"
121
-          placeholder="请选择分管领导审批时间">
122
-        </el-date-picker>
123
-      </el-form-item>
124
-      <el-form-item label="总经理意见" prop="zjlComment">
125
-        <el-input
126
-          v-model="queryParams.zjlComment"
127
-          placeholder="请输入总经理意见"
128
-          clearable
129
-          @keyup.enter.native="handleQuery"
130
-        />
131
-      </el-form-item>
132
-      <el-form-item label="总经理" prop="zjlLeader">
133
-        <el-input
134
-          v-model="queryParams.zjlLeader"
135
-          placeholder="请输入总经理"
136
-          clearable
137
-          @keyup.enter.native="handleQuery"
138
-        />
139
-      </el-form-item>
140
-      <el-form-item label="总经理审批时间" prop="zjlTime">
141
-        <el-date-picker clearable
142
-          v-model="queryParams.zjlTime"
143
-          type="date"
144
-          value-format="yyyy-MM-dd"
145
-          placeholder="请选择总经理审批时间">
146
-        </el-date-picker>
12
+        <el-select v-model="queryParams.applyDept" filterable clearable @change="handleQuery">
13
+          <el-option v-for="item in $store.state.user.deptList" :key="item.deptId" :label="item.deptName"
14
+            :value="item.deptId">
15
+          </el-option>
16
+        </el-select>
17
+      </el-form-item>
18
+      <el-form-item label="项目编号" prop="projectId">
19
+        <el-select v-model="queryParams.projectId" clearable filterable remote reserve-keyword placeholder="请输入项目编号"
20
+          :remote-method="remoteMethod" :loading="loading" style="width: 400px;">
21
+          <el-option v-for="project in projectList" :key="project.projectId"
22
+            :label="project.projectNumber + '-' + project.projectName" :value="project.projectId">
23
+          </el-option>
24
+        </el-select>
147 25
       </el-form-item>
148 26
       <el-form-item>
149 27
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -152,38 +30,6 @@
152 30
     </el-form>
153 31
 
154 32
     <el-row :gutter="10" class="mb8">
155
-      <el-col :span="1.5">
156
-        <el-button
157
-          type="primary"
158
-          plain
159
-          icon="el-icon-plus"
160
-          size="mini"
161
-          @click="handleAdd"
162
-          v-hasPermi="['oa:recruit:add']"
163
-        >新增</el-button>
164
-      </el-col>
165
-      <el-col :span="1.5">
166
-        <el-button
167
-          type="success"
168
-          plain
169
-          icon="el-icon-edit"
170
-          size="mini"
171
-          :disabled="single"
172
-          @click="handleUpdate"
173
-          v-hasPermi="['oa:recruit:edit']"
174
-        >修改</el-button>
175
-      </el-col>
176
-      <el-col :span="1.5">
177
-        <el-button
178
-          type="danger"
179
-          plain
180
-          icon="el-icon-delete"
181
-          size="mini"
182
-          :disabled="multiple"
183
-          @click="handleDelete"
184
-          v-hasPermi="['oa:recruit:remove']"
185
-        >删除</el-button>
186
-      </el-col>
187 33
       <el-col :span="1.5">
188 34
         <el-button
189 35
           type="warning"
@@ -199,36 +45,26 @@
199 45
 
200 46
     <el-table v-loading="loading" :data="recruitList" @selection-change="handleSelectionChange">
201 47
       <el-table-column type="selection" width="55" align="center" />
202
-      <el-table-column label="招聘申请id" align="center" prop="recruitId" />
203
-      <el-table-column label="申请人" align="center" prop="applier" />
204
-      <el-table-column label="申请部门" align="center" prop="applyDept" />
205
-      <el-table-column label="项目id" align="center" prop="projectId" />
206
-      <el-table-column label="申请日期" align="center" prop="applyDate" width="180">
207
-        <template slot-scope="scope">
208
-          <span>{{ parseTime(scope.row.applyDate, '{y}-{m}-{d}') }}</span>
48
+      <el-table-column label="申请人" align="center" prop="applier" >
49
+         <template slot-scope="scope">
50
+          {{ getUserName(scope.row.applier) }}
209 51
         </template>
210 52
       </el-table-column>
211
-      <el-table-column label="岗位名称" align="center" prop="postName" />
212
-      <el-table-column label="岗位人数" align="center" prop="postNumber" />
213
-      <el-table-column label="岗位职责" align="center" prop="duty" />
214
-      <el-table-column label="任职资格" align="center" prop="qualification" />
215
-      <el-table-column label="薪酬待遇" align="center" prop="wage" />
216
-      <el-table-column label="部门意见" align="center" prop="deptComment" />
217
-      <el-table-column label="部门负责人" align="center" prop="deptLeader" />
218
-      <el-table-column label="部门审批时间" align="center" prop="deptTime" width="180">
53
+      <el-table-column label="申请部门" align="center" prop="applyDept" >
219 54
         <template slot-scope="scope">
220
-          <span>{{ parseTime(scope.row.deptTime, '{y}-{m}-{d}') }}</span>
55
+          {{ getDeptName(scope.row.applyDept) }}
221 56
         </template>
222 57
       </el-table-column>
223
-      <el-table-column label="分管领导意见" align="center" prop="managerComment" />
224
-      <el-table-column label="分管领导" align="center" prop="managerLeader" />
225
-      <el-table-column label="分管领导审批时间" align="center" prop="managerTime" width="180">
58
+      <el-table-column label="项目id" align="center" prop="project.projectNumber" />
59
+      <el-table-column label="申请日期" align="center" prop="applyDate" width="180">
226 60
         <template slot-scope="scope">
227
-          <span>{{ parseTime(scope.row.managerTime, '{y}-{m}-{d}') }}</span>
61
+          <span>{{ parseTime(scope.row.applyDate, '{y}-{m}-{d}') }}</span>
228 62
         </template>
229 63
       </el-table-column>
64
+      <el-table-column label="岗位名称" align="center" prop="postName" />
65
+      <el-table-column label="岗位人数" align="center" prop="postNumber" />
66
+      <el-table-column label="薪酬待遇" align="center" prop="wage" />
230 67
       <el-table-column label="总经理意见" align="center" prop="zjlComment" />
231
-      <el-table-column label="总经理" align="center" prop="zjlLeader" />
232 68
       <el-table-column label="总经理审批时间" align="center" prop="zjlTime" width="180">
233 69
         <template slot-scope="scope">
234 70
           <span>{{ parseTime(scope.row.zjlTime, '{y}-{m}-{d}') }}</span>
@@ -236,20 +72,7 @@
236 72
       </el-table-column>
237 73
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
238 74
         <template slot-scope="scope">
239
-          <el-button
240
-            size="mini"
241
-            type="text"
242
-            icon="el-icon-edit"
243
-            @click="handleUpdate(scope.row)"
244
-            v-hasPermi="['oa:recruit:edit']"
245
-          >修改</el-button>
246
-          <el-button
247
-            size="mini"
248
-            type="text"
249
-            icon="el-icon-delete"
250
-            @click="handleDelete(scope.row)"
251
-            v-hasPermi="['oa:recruit:remove']"
252
-          >删除</el-button>
75
+          <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)">查看</el-button>
253 76
         </template>
254 77
       </el-table-column>
255 78
     </el-table>
@@ -263,95 +86,19 @@
263 86
     />
264 87
 
265 88
     <!-- 添加或修改cmc招聘申请对话框 -->
266
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
267
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
268
-        <el-form-item label="申请人" prop="applier">
269
-          <el-input v-model="form.applier" placeholder="请输入申请人" />
270
-        </el-form-item>
271
-        <el-form-item label="申请部门" prop="applyDept">
272
-          <el-input v-model="form.applyDept" placeholder="请输入申请部门" />
273
-        </el-form-item>
274
-        <el-form-item label="项目id" prop="projectId">
275
-          <el-input v-model="form.projectId" placeholder="请输入项目id" />
276
-        </el-form-item>
277
-        <el-form-item label="申请日期" prop="applyDate">
278
-          <el-date-picker clearable
279
-            v-model="form.applyDate"
280
-            type="date"
281
-            value-format="yyyy-MM-dd"
282
-            placeholder="请选择申请日期">
283
-          </el-date-picker>
284
-        </el-form-item>
285
-        <el-form-item label="岗位名称" prop="postName">
286
-          <el-input v-model="form.postName" placeholder="请输入岗位名称" />
287
-        </el-form-item>
288
-        <el-form-item label="岗位人数" prop="postNumber">
289
-          <el-input v-model="form.postNumber" placeholder="请输入岗位人数" />
290
-        </el-form-item>
291
-        <el-form-item label="岗位职责" prop="duty">
292
-          <el-input v-model="form.duty" placeholder="请输入岗位职责" />
293
-        </el-form-item>
294
-        <el-form-item label="任职资格" prop="qualification">
295
-          <el-input v-model="form.qualification" placeholder="请输入任职资格" />
296
-        </el-form-item>
297
-        <el-form-item label="薪酬待遇" prop="wage">
298
-          <el-input v-model="form.wage" placeholder="请输入薪酬待遇" />
299
-        </el-form-item>
300
-        <el-form-item label="部门意见" prop="deptComment">
301
-          <el-input v-model="form.deptComment" placeholder="请输入部门意见" />
302
-        </el-form-item>
303
-        <el-form-item label="部门负责人" prop="deptLeader">
304
-          <el-input v-model="form.deptLeader" placeholder="请输入部门负责人" />
305
-        </el-form-item>
306
-        <el-form-item label="部门审批时间" prop="deptTime">
307
-          <el-date-picker clearable
308
-            v-model="form.deptTime"
309
-            type="date"
310
-            value-format="yyyy-MM-dd"
311
-            placeholder="请选择部门审批时间">
312
-          </el-date-picker>
313
-        </el-form-item>
314
-        <el-form-item label="分管领导意见" prop="managerComment">
315
-          <el-input v-model="form.managerComment" placeholder="请输入分管领导意见" />
316
-        </el-form-item>
317
-        <el-form-item label="分管领导" prop="managerLeader">
318
-          <el-input v-model="form.managerLeader" placeholder="请输入分管领导" />
319
-        </el-form-item>
320
-        <el-form-item label="分管领导审批时间" prop="managerTime">
321
-          <el-date-picker clearable
322
-            v-model="form.managerTime"
323
-            type="date"
324
-            value-format="yyyy-MM-dd"
325
-            placeholder="请选择分管领导审批时间">
326
-          </el-date-picker>
327
-        </el-form-item>
328
-        <el-form-item label="总经理意见" prop="zjlComment">
329
-          <el-input v-model="form.zjlComment" placeholder="请输入总经理意见" />
330
-        </el-form-item>
331
-        <el-form-item label="总经理" prop="zjlLeader">
332
-          <el-input v-model="form.zjlLeader" placeholder="请输入总经理" />
333
-        </el-form-item>
334
-        <el-form-item label="总经理审批时间" prop="zjlTime">
335
-          <el-date-picker clearable
336
-            v-model="form.zjlTime"
337
-            type="date"
338
-            value-format="yyyy-MM-dd"
339
-            placeholder="请选择总经理审批时间">
340
-          </el-date-picker>
341
-        </el-form-item>
342
-      </el-form>
343
-      <div slot="footer" class="dialog-footer">
344
-        <el-button type="primary" @click="submitForm">确 定</el-button>
345
-        <el-button @click="cancel">取 消</el-button>
346
-      </div>
89
+    <el-dialog :title="title" :visible.sync="open" width="65%" append-to-body>
90
+      <recruit-tab :taskForm="taskForm"></recruit-tab>
347 91
     </el-dialog>
348 92
   </div>
349 93
 </template>
350 94
 
351 95
 <script>
352 96
 import { listRecruit, getRecruit, delRecruit, addRecruit, updateRecruit } from "@/api/oa/recruit/recruit";
97
+import { listProject } from '@/api/oa/project/project';
98
+import RecruitTab from './recruitTab.vue'
353 99
 
354 100
 export default {
101
+  components: { RecruitTab },
355 102
   name: "Recruit",
356 103
   data() {
357 104
     return {
@@ -400,7 +147,11 @@ export default {
400 147
       form: {},
401 148
       // 表单校验
402 149
       rules: {
403
-      }
150
+      },
151
+      taskForm: {
152
+        formId: ''
153
+      },
154
+      projectList: []
404 155
     };
405 156
   },
406 157
   created() {
@@ -462,51 +213,21 @@ export default {
462 213
       this.single = selection.length!==1
463 214
       this.multiple = !selection.length
464 215
     },
465
-    /** 新增按钮操作 */
466
-    handleAdd() {
467
-      this.reset();
468
-      this.open = true;
469
-      this.title = "添加cmc招聘申请";
216
+    goBack() {
217
+      this.$emit('goBack')
470 218
     },
471
-    /** 修改按钮操作 */
472
-    handleUpdate(row) {
473
-      this.reset();
474
-      const recruitId = row.recruitId || this.ids
475
-      getRecruit(recruitId).then(response => {
476
-        this.form = response.data;
477
-        this.open = true;
478
-        this.title = "修改cmc招聘申请";
479
-      });
480
-    },
481
-    /** 提交按钮 */
482
-    submitForm() {
483
-      this.$refs["form"].validate(valid => {
484
-        if (valid) {
485
-          if (this.form.recruitId != null) {
486
-            updateRecruit(this.form).then(response => {
487
-              this.$modal.msgSuccess("修改成功");
488
-              this.open = false;
489
-              this.getList();
490
-            });
491
-          } else {
492
-            addRecruit(this.form).then(response => {
493
-              this.$modal.msgSuccess("新增成功");
494
-              this.open = false;
495
-              this.getList();
496
-            });
497
-          }
498
-        }
499
-      });
219
+    remoteMethod(val) {
220
+      listProject({
221
+        pageNum: 1,
222
+        pageSize: 20,
223
+        projectNumber: val
224
+      }).then(res => {
225
+        this.projectList = res.rows;
226
+      })
500 227
     },
501
-    /** 删除按钮操作 */
502
-    handleDelete(row) {
503
-      const recruitIds = row.recruitId || this.ids;
504
-      this.$modal.confirm('是否确认删除cmc招聘申请编号为"' + recruitIds + '"的数据项?').then(function() {
505
-        return delRecruit(recruitIds);
506
-      }).then(() => {
507
-        this.getList();
508
-        this.$modal.msgSuccess("删除成功");
509
-      }).catch(() => {});
228
+    handleView(row){
229
+      this.taskForm.formId = row.recruitId;
230
+      this.open = true;
510 231
     },
511 232
     /** 导出按钮操作 */
512 233
     handleExport() {

+ 194
- 0
oa-ui/src/views/oa/recruit/recruitTab.vue Переглянути файл

@@ -0,0 +1,194 @@
1
+<template>
2
+  <div class="app-container" v-loading="loading">
3
+    <el-button type="success" @click="openPrint = true">打印</el-button>
4
+    <h3 class="text-center"><b>{{ '招聘申请表' }}</b></h3>
5
+    <el-form ref="recruitForm" :model="form" :rules="rules" label-width="125px" disabled>
6
+        <el-row>
7
+            <el-col :span="6" :xs="24">
8
+                <el-form-item label="申请人" prop="applier" >
9
+                    {{ getUserName(form.applier) }}
10
+                </el-form-item>
11
+            </el-col>
12
+            <el-col :span="6" :xs="24">
13
+        <el-form-item label="申请部门" prop="applyDept" >
14
+            {{ getDeptName(form.applyDept) }}
15
+        </el-form-item>
16
+            </el-col>
17
+        </el-row>
18
+        <el-row v-show="isProject">
19
+            <el-col :span="6" :xs="24">
20
+            <el-form-item label="项目编号:" prop="project.projectNumber">
21
+                {{ form.project.projectNumber }}
22
+            </el-form-item>
23
+            </el-col>
24
+            <el-col :span="6" :xs="24">
25
+            <el-form-item label="项目名称:" prop="project.projectName">
26
+                {{ form.project.projectName }}
27
+            </el-form-item>
28
+            </el-col>
29
+        </el-row>
30
+        <el-row>
31
+            <el-col :span="6" :xs="24">
32
+            <el-form-item label="岗位名称:" prop="postName">
33
+                {{ form.postName }}
34
+            </el-form-item>
35
+            </el-col>
36
+            <el-col :span="6" :xs="24">
37
+            <el-form-item label="招聘人数:" prop="postNumber">
38
+                {{ form.postNumber }}
39
+            </el-form-item>
40
+            </el-col>
41
+        </el-row>
42
+        <el-form-item label="岗位职责:" prop="duty">
43
+            <el-input v-model="form.duty" placeholder="请输入分管审批意见" type="textarea"
44
+            :autosize="{ minRows: 4 }" />
45
+        </el-form-item>
46
+        <el-form-item label="任职资格:" prop="qualification">
47
+            <el-input v-model="form.qualification" placeholder="请输入分管审批意见" type="textarea"
48
+            :autosize="{ minRows: 4 }" />
49
+        </el-form-item>
50
+        <el-form-item label="薪资待遇:" prop="wage">
51
+            <el-input v-model="form.wage" placeholder="请输入分管审批意见" type="textarea"
52
+            :autosize="{ minRows: 4 }" />
53
+        </el-form-item>
54
+        <el-form-item label="部门意见:" prop="deptComment">
55
+            <el-input v-model="form.deptComment" placeholder="请输入部门意见" type="textarea"
56
+            :autosize="{ minRows: 4 }" />
57
+        </el-form-item>
58
+        <el-row>
59
+            <el-col :span="6" :xs="24" :offset="12">
60
+            <el-form-item label="签名" prop="deptUserId">
61
+                <span class="auditor"> {{ form.deptUserId ? form.deptUser.nickName : '' }}
62
+                </span>
63
+            </el-form-item>
64
+            </el-col>
65
+            <el-col :span="6">
66
+            <el-form-item label="日期:" label-width="120px">
67
+                <span> {{ parseTime(form.deptTime, '{y}-{m}-{d}') }} </span>
68
+            </el-form-item>
69
+            </el-col>
70
+        </el-row>
71
+         <el-form-item label="分管审批意见:" prop="managerComment">
72
+            <el-input v-model="form.managerComment" placeholder="请输入分管审批意见" type="textarea"
73
+            :autosize="{ minRows: 4 }" />
74
+        </el-form-item>
75
+        <el-row>
76
+            <el-col :span="6" :xs="24" :offset="12">
77
+            <el-form-item label="签名" prop="deptUserId">
78
+                <span class="auditor"> {{ form.managerUserId ? form.managerUser.nickName : '' }}
79
+                </span>
80
+            </el-form-item>
81
+            </el-col>
82
+            <el-col :span="6">
83
+            <el-form-item label="日期:" label-width="120px">
84
+                <span> {{ parseTime(form.managerTime, '{y}-{m}-{d}') }} </span>
85
+            </el-form-item>
86
+            </el-col>
87
+        </el-row>
88
+        <el-form-item label="总经理审批意见:" prop="zjlComment">
89
+            <el-input v-model="form.zjlComment" placeholder="请输入总经理审批意见" type="textarea" 
90
+            :autosize="{ minRows: 4 }" />
91
+        </el-form-item>
92
+        <el-row>
93
+            <el-col :span="6" :xs="24" :offset="12">
94
+            <el-form-item label="签名" prop="deptUserId">
95
+                <span class="auditor"> {{ form.zjlUserId ? form.zjlUser.nickName : '' }}
96
+                </span>
97
+            </el-form-item>
98
+            </el-col>
99
+            <el-col :span="6">
100
+            <el-form-item label="日期:" label-width="120px">
101
+                <span> {{ parseTime(form.zjlTime, '{y}-{m}-{d}') }} </span>
102
+            </el-form-item>
103
+            </el-col>
104
+        </el-row>
105
+    </el-form>
106
+    <el-dialog title="招聘申请表格预览" :visible.sync="openPrint" width="65%" append-to-body>
107
+      <recruit-print :form="form" @cancel="openPrint = false"></recruit-print>
108
+    </el-dialog>
109
+  </div>
110
+</template>
111
+
112
+<script>
113
+import { listRecruit, getRecruit, delRecruit, addRecruit, updateRecruit } from "@/api/oa/recruit/recruit";
114
+import { listUser } from '@/api/system/user';
115
+import { getProject } from "@/api/oa/project/project";
116
+import RecruitPrint from '../../flowable/form/components/print/recruitPrint.vue';
117
+export default {
118
+  components: { RecruitPrint },
119
+  props: {
120
+    taskForm: {
121
+      type: Object,
122
+      required: true
123
+    }
124
+  },
125
+  computed: {
126
+    projectNumber() {
127
+      return this.$store.state.projectProcess.projectNumber;
128
+    },
129
+    projectName() {
130
+      return this.$store.state.projectProcess.projectName;
131
+    },
132
+  },
133
+  watch: {
134
+    projectNumber(newval) {
135
+      this.$set(this.form, "projectNumber", newval);
136
+    },
137
+    projectName(newval) {
138
+      this.$set(this.form, "projectName", newval);
139
+    },
140
+    'taskForm.formId'() {
141
+      this.loading = true;
142
+      this.initForm();
143
+    }
144
+
145
+  },
146
+  data() {
147
+    return {
148
+      isEmpty: true,
149
+      form: {},
150
+      rules: {},
151
+      userList: [],
152
+      loading: false,
153
+      isProject: false,
154
+      openPrint: false,
155
+    }
156
+  },
157
+  mounted() {
158
+    this.initForm();
159
+  },
160
+  methods: {
161
+    /** 查询cmc招聘列表 */
162
+    initForm() {
163
+      getRecruit(this.taskForm.formId).then((res) => {
164
+        if (res.data) {
165
+            this.isEmpty = false;
166
+            this.form = res.data;
167
+            if (res.data) {
168
+              if(res.data.projectId!=''){
169
+                  this.isProject = true;
170
+              }else{
171
+                this.isProject = false;
172
+              }
173
+              this.loading = false
174
+            }
175
+        }})
176
+      },
177
+    }
178
+  }
179
+</script>
180
+
181
+<style lang="scss" scoped>
182
+::v-deep .el-input.is-disabled .el-input__inner {
183
+  color: #686a6e;
184
+}
185
+
186
+::v-deep .el-textarea.is-disabled .el-textarea__inner,
187
+.el-radio__input.is-disabled+span.el-radio__label {
188
+  color: #686a6e;
189
+}
190
+
191
+::v-deep .el-radio__input.is-disabled+span.el-radio__label {
192
+  color: #686a6e;
193
+}
194
+</style>

+ 70
- 387
oa-ui/src/views/oa/transfer/index.vue Переглянути файл

@@ -1,173 +1,19 @@
1 1
 <template>
2 2
   <div class="app-container">
3 3
     <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
4
-      <el-form-item label="申请人id" prop="userId">
5
-        <el-input
6
-          v-model="queryParams.userId"
7
-          placeholder="请输入申请人id"
4
+      <el-form-item label="申请人" prop="userId">
5
+        <el-select
6
+          v-model="queryParams.applier"
7
+          filterable
8 8
           clearable
9
-          @keyup.enter.native="handleQuery"
10
-        />
11
-      </el-form-item>
12
-      <el-form-item label="申请日期" prop="applyDate">
13
-        <el-date-picker clearable
14
-          v-model="queryParams.applyDate"
15
-          type="date"
16
-          value-format="yyyy-MM-dd"
17
-          placeholder="请选择申请日期">
18
-        </el-date-picker>
19
-      </el-form-item>
20
-      <el-form-item label="调整前所在部门id" prop="beforeDeptId">
21
-        <el-input
22
-          v-model="queryParams.beforeDeptId"
23
-          placeholder="请输入调整前所在部门id"
24
-          clearable
25
-          @keyup.enter.native="handleQuery"
26
-        />
27
-      </el-form-item>
28
-      <el-form-item label="调整前岗位id" prop="beforePostId">
29
-        <el-input
30
-          v-model="queryParams.beforePostId"
31
-          placeholder="请输入调整前岗位id"
32
-          clearable
33
-          @keyup.enter.native="handleQuery"
34
-        />
35
-      </el-form-item>
36
-      <el-form-item label="调整后所在部门id" prop="afterDeptId">
37
-        <el-input
38
-          v-model="queryParams.afterDeptId"
39
-          placeholder="请输入调整后所在部门id"
40
-          clearable
41
-          @keyup.enter.native="handleQuery"
42
-        />
43
-      </el-form-item>
44
-      <el-form-item label="调整后岗位id" prop="afterPostId">
45
-        <el-input
46
-          v-model="queryParams.afterPostId"
47
-          placeholder="请输入调整后岗位id"
48
-          clearable
49
-          @keyup.enter.native="handleQuery"
50
-        />
51
-      </el-form-item>
52
-      <el-form-item label="调整前所在部门意见" prop="beforeDeptComment">
53
-        <el-input
54
-          v-model="queryParams.beforeDeptComment"
55
-          placeholder="请输入调整前所在部门意见"
56
-          clearable
57
-          @keyup.enter.native="handleQuery"
58
-        />
59
-      </el-form-item>
60
-      <el-form-item label="调整前所在部门负责人" prop="beforeDeptLeader">
61
-        <el-input
62
-          v-model="queryParams.beforeDeptLeader"
63
-          placeholder="请输入调整前所在部门负责人"
64
-          clearable
65
-          @keyup.enter.native="handleQuery"
66
-        />
67
-      </el-form-item>
68
-      <el-form-item label="调整前所在部门审批时间" prop="beforeDeptTime">
69
-        <el-date-picker clearable
70
-          v-model="queryParams.beforeDeptTime"
71
-          type="date"
72
-          value-format="yyyy-MM-dd"
73
-          placeholder="请选择调整前所在部门审批时间">
74
-        </el-date-picker>
75
-      </el-form-item>
76
-      <el-form-item label="调整后所在部门意见" prop="afterDeptComment">
77
-        <el-input
78
-          v-model="queryParams.afterDeptComment"
79
-          placeholder="请输入调整后所在部门意见"
80
-          clearable
81
-          @keyup.enter.native="handleQuery"
82
-        />
83
-      </el-form-item>
84
-      <el-form-item label="调整后所在部门审批时间" prop="afterDeptTime">
85
-        <el-date-picker clearable
86
-          v-model="queryParams.afterDeptTime"
87
-          type="date"
88
-          value-format="yyyy-MM-dd"
89
-          placeholder="请选择调整后所在部门审批时间">
90
-        </el-date-picker>
91
-      </el-form-item>
92
-      <el-form-item label="调整后所在部门负责人" prop="afterDeptLeader">
93
-        <el-input
94
-          v-model="queryParams.afterDeptLeader"
95
-          placeholder="请输入调整后所在部门负责人"
96
-          clearable
97
-          @keyup.enter.native="handleQuery"
98
-        />
99
-      </el-form-item>
100
-      <el-form-item label="综合事务部意见" prop="zhComment">
101
-        <el-input
102
-          v-model="queryParams.zhComment"
103
-          placeholder="请输入综合事务部意见"
104
-          clearable
105
-          @keyup.enter.native="handleQuery"
106
-        />
107
-      </el-form-item>
108
-      <el-form-item label="综合事务部审批时间" prop="zhTime">
109
-        <el-date-picker clearable
110
-          v-model="queryParams.zhTime"
111
-          type="date"
112
-          value-format="yyyy-MM-dd"
113
-          placeholder="请选择综合事务部审批时间">
114
-        </el-date-picker>
115
-      </el-form-item>
116
-      <el-form-item label="综合事务部负责人" prop="zhUserId">
117
-        <el-input
118
-          v-model="queryParams.zhUserId"
119
-          placeholder="请输入综合事务部负责人"
120
-          clearable
121
-          @keyup.enter.native="handleQuery"
122
-        />
123
-      </el-form-item>
124
-      <el-form-item label="分管领导意见" prop="managerComment">
125
-        <el-input
126
-          v-model="queryParams.managerComment"
127
-          placeholder="请输入分管领导意见"
128
-          clearable
129
-          @keyup.enter.native="handleQuery"
130
-        />
131
-      </el-form-item>
132
-      <el-form-item label="分管领导审批时间" prop="managerTime">
133
-        <el-date-picker clearable
134
-          v-model="queryParams.managerTime"
135
-          type="date"
136
-          value-format="yyyy-MM-dd"
137
-          placeholder="请选择分管领导审批时间">
138
-        </el-date-picker>
139
-      </el-form-item>
140
-      <el-form-item label="分管领导" prop="managerUserId">
141
-        <el-input
142
-          v-model="queryParams.managerUserId"
143
-          placeholder="请输入分管领导"
144
-          clearable
145
-          @keyup.enter.native="handleQuery"
146
-        />
147
-      </el-form-item>
148
-      <el-form-item label="总经理意见" prop="zjlComment">
149
-        <el-input
150
-          v-model="queryParams.zjlComment"
151
-          placeholder="请输入总经理意见"
152
-          clearable
153
-          @keyup.enter.native="handleQuery"
154
-        />
155
-      </el-form-item>
156
-      <el-form-item label="总经理审批时间" prop="zjlTime">
157
-        <el-date-picker clearable
158
-          v-model="queryParams.zjlTime"
159
-          type="date"
160
-          value-format="yyyy-MM-dd"
161
-          placeholder="请选择总经理审批时间">
162
-        </el-date-picker>
163
-      </el-form-item>
164
-      <el-form-item label="总经理" prop="zjlUserId">
165
-        <el-input
166
-          v-model="queryParams.zjlUserId"
167
-          placeholder="请输入总经理"
168
-          clearable
169
-          @keyup.enter.native="handleQuery"
170
-        />
9
+          @change="handleQuery">
10
+          <el-option
11
+            v-for="item in $store.state.user.userList"
12
+            :key="item.userId"
13
+            :label="item.nickName"
14
+            :value="item.userId">
15
+          </el-option>
16
+        </el-select>
171 17
       </el-form-item>
172 18
       <el-form-item>
173 19
         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@@ -176,38 +22,6 @@
176 22
     </el-form>
177 23
 
178 24
     <el-row :gutter="10" class="mb8">
179
-      <el-col :span="1.5">
180
-        <el-button
181
-          type="primary"
182
-          plain
183
-          icon="el-icon-plus"
184
-          size="mini"
185
-          @click="handleAdd"
186
-          v-hasPermi="['oa:transfer:add']"
187
-        >新增</el-button>
188
-      </el-col>
189
-      <el-col :span="1.5">
190
-        <el-button
191
-          type="success"
192
-          plain
193
-          icon="el-icon-edit"
194
-          size="mini"
195
-          :disabled="single"
196
-          @click="handleUpdate"
197
-          v-hasPermi="['oa:transfer:edit']"
198
-        >修改</el-button>
199
-      </el-col>
200
-      <el-col :span="1.5">
201
-        <el-button
202
-          type="danger"
203
-          plain
204
-          icon="el-icon-delete"
205
-          size="mini"
206
-          :disabled="multiple"
207
-          @click="handleDelete"
208
-          v-hasPermi="['oa:transfer:remove']"
209
-        >删除</el-button>
210
-      </el-col>
211 25
       <el-col :span="1.5">
212 26
         <el-button
213 27
           type="warning"
@@ -222,69 +36,44 @@
222 36
     </el-row>
223 37
 
224 38
     <el-table v-loading="loading" :data="transferList" @selection-change="handleSelectionChange">
225
-      <el-table-column type="selection" width="55" align="center" />
226
-      <el-table-column label="调岗id" align="center" prop="transferId" />
227
-      <el-table-column label="申请人id" align="center" prop="userId" />
228
-      <el-table-column label="申请日期" align="center" prop="applyDate" width="180">
39
+      <el-table-column type="selection" width="55" align="center"/>
40
+      <el-table-column label="申请人" align="center" prop="userId">
229 41
         <template slot-scope="scope">
230
-          <span>{{ parseTime(scope.row.applyDate, '{y}-{m}-{d}') }}</span>
42
+          <span>{{ getUserName(scope.row.applier) }}</span>
231 43
         </template>
232 44
       </el-table-column>
233
-      <el-table-column label="调整前所在部门id" align="center" prop="beforeDeptId" />
234
-      <el-table-column label="调整前岗位id" align="center" prop="beforePostId" />
235
-      <el-table-column label="调整后所在部门id" align="center" prop="afterDeptId" />
236
-      <el-table-column label="调整后岗位id" align="center" prop="afterPostId" />
237
-      <el-table-column label="调整前所在部门意见" align="center" prop="beforeDeptComment" />
238
-      <el-table-column label="调整前所在部门负责人" align="center" prop="beforeDeptLeader" />
239
-      <el-table-column label="调整前所在部门审批时间" align="center" prop="beforeDeptTime" width="180">
45
+      <el-table-column label="申请日期" align="center" prop="applyDate" width="180">
46
+        
47
+      </el-table-column>
48
+      <el-table-column label="调整前所在部门" align="center" prop="beforeDeptId" >
240 49
         <template slot-scope="scope">
241
-          <span>{{ parseTime(scope.row.beforeDeptTime, '{y}-{m}-{d}') }}</span>
50
+          <span>{{ getDeptName(scope.row.beforeDeptId) }}</span>
242 51
         </template>
243 52
       </el-table-column>
244
-      <el-table-column label="调整后所在部门意见" align="center" prop="afterDeptComment" />
245
-      <el-table-column label="调整后所在部门审批时间" align="center" prop="afterDeptTime" width="180">
53
+      <el-table-column label="拟调整岗位" align="center" prop="beforePostId" >
246 54
         <template slot-scope="scope">
247
-          <span>{{ parseTime(scope.row.afterDeptTime, '{y}-{m}-{d}') }}</span>
55
+          <span>{{ getPostById(scope.row.beforePostId) }}</span>
248 56
         </template>
249 57
       </el-table-column>
250
-      <el-table-column label="调整后所在部门负责人" align="center" prop="afterDeptLeader" />
251
-      <el-table-column label="综合事务部意见" align="center" prop="zhComment" />
252
-      <el-table-column label="综合事务部审批时间" align="center" prop="zhTime" width="180">
58
+      <el-table-column label="调整后所在部门" align="center" prop="afterDeptId" >
253 59
         <template slot-scope="scope">
254
-          <span>{{ parseTime(scope.row.zhTime, '{y}-{m}-{d}') }}</span>
60
+          <span>{{ getDeptName(scope.row.afterDeptId) }}</span>
255 61
         </template>
256 62
       </el-table-column>
257
-      <el-table-column label="综合事务部负责人" align="center" prop="zhUserId" />
258
-      <el-table-column label="分管领导意见" align="center" prop="managerComment" />
259
-      <el-table-column label="分管领导审批时间" align="center" prop="managerTime" width="180">
63
+      <el-table-column label="调整后岗位" align="center" prop="afterPostId" >
260 64
         <template slot-scope="scope">
261
-          <span>{{ parseTime(scope.row.managerTime, '{y}-{m}-{d}') }}</span>
65
+          <span>{{ getPostById(scope.row.afterPostId) }}</span>
262 66
         </template>
263 67
       </el-table-column>
264
-      <el-table-column label="分管领导" align="center" prop="managerUserId" />
265 68
       <el-table-column label="总经理意见" align="center" prop="zjlComment" />
266 69
       <el-table-column label="总经理审批时间" align="center" prop="zjlTime" width="180">
267 70
         <template slot-scope="scope">
268 71
           <span>{{ parseTime(scope.row.zjlTime, '{y}-{m}-{d}') }}</span>
269 72
         </template>
270 73
       </el-table-column>
271
-      <el-table-column label="总经理" align="center" prop="zjlUserId" />
272 74
       <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
273 75
         <template slot-scope="scope">
274
-          <el-button
275
-            size="mini"
276
-            type="text"
277
-            icon="el-icon-edit"
278
-            @click="handleUpdate(scope.row)"
279
-            v-hasPermi="['oa:transfer:edit']"
280
-          >修改</el-button>
281
-          <el-button
282
-            size="mini"
283
-            type="text"
284
-            icon="el-icon-delete"
285
-            @click="handleDelete(scope.row)"
286
-            v-hasPermi="['oa:transfer:remove']"
287
-          >删除</el-button>
76
+          <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)">查看</el-button>
288 77
         </template>
289 78
       </el-table-column>
290 79
     </el-table>
@@ -297,115 +86,19 @@
297 86
       @pagination="getList"
298 87
     />
299 88
 
300
-    <!-- 添加或修改cmc调岗申请对话框 -->
301
-    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
302
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
303
-        <el-form-item label="申请人id" prop="userId">
304
-          <el-input v-model="form.userId" placeholder="请输入申请人id" />
305
-        </el-form-item>
306
-        <el-form-item label="申请日期" prop="applyDate">
307
-          <el-date-picker clearable
308
-            v-model="form.applyDate"
309
-            type="date"
310
-            value-format="yyyy-MM-dd"
311
-            placeholder="请选择申请日期">
312
-          </el-date-picker>
313
-        </el-form-item>
314
-        <el-form-item label="调整前所在部门id" prop="beforeDeptId">
315
-          <el-input v-model="form.beforeDeptId" placeholder="请输入调整前所在部门id" />
316
-        </el-form-item>
317
-        <el-form-item label="调整前岗位id" prop="beforePostId">
318
-          <el-input v-model="form.beforePostId" placeholder="请输入调整前岗位id" />
319
-        </el-form-item>
320
-        <el-form-item label="调整后所在部门id" prop="afterDeptId">
321
-          <el-input v-model="form.afterDeptId" placeholder="请输入调整后所在部门id" />
322
-        </el-form-item>
323
-        <el-form-item label="调整后岗位id" prop="afterPostId">
324
-          <el-input v-model="form.afterPostId" placeholder="请输入调整后岗位id" />
325
-        </el-form-item>
326
-        <el-form-item label="调整前所在部门意见" prop="beforeDeptComment">
327
-          <el-input v-model="form.beforeDeptComment" placeholder="请输入调整前所在部门意见" />
328
-        </el-form-item>
329
-        <el-form-item label="调整前所在部门负责人" prop="beforeDeptLeader">
330
-          <el-input v-model="form.beforeDeptLeader" placeholder="请输入调整前所在部门负责人" />
331
-        </el-form-item>
332
-        <el-form-item label="调整前所在部门审批时间" prop="beforeDeptTime">
333
-          <el-date-picker clearable
334
-            v-model="form.beforeDeptTime"
335
-            type="date"
336
-            value-format="yyyy-MM-dd"
337
-            placeholder="请选择调整前所在部门审批时间">
338
-          </el-date-picker>
339
-        </el-form-item>
340
-        <el-form-item label="调整后所在部门意见" prop="afterDeptComment">
341
-          <el-input v-model="form.afterDeptComment" placeholder="请输入调整后所在部门意见" />
342
-        </el-form-item>
343
-        <el-form-item label="调整后所在部门审批时间" prop="afterDeptTime">
344
-          <el-date-picker clearable
345
-            v-model="form.afterDeptTime"
346
-            type="date"
347
-            value-format="yyyy-MM-dd"
348
-            placeholder="请选择调整后所在部门审批时间">
349
-          </el-date-picker>
350
-        </el-form-item>
351
-        <el-form-item label="调整后所在部门负责人" prop="afterDeptLeader">
352
-          <el-input v-model="form.afterDeptLeader" placeholder="请输入调整后所在部门负责人" />
353
-        </el-form-item>
354
-        <el-form-item label="综合事务部意见" prop="zhComment">
355
-          <el-input v-model="form.zhComment" placeholder="请输入综合事务部意见" />
356
-        </el-form-item>
357
-        <el-form-item label="综合事务部审批时间" prop="zhTime">
358
-          <el-date-picker clearable
359
-            v-model="form.zhTime"
360
-            type="date"
361
-            value-format="yyyy-MM-dd"
362
-            placeholder="请选择综合事务部审批时间">
363
-          </el-date-picker>
364
-        </el-form-item>
365
-        <el-form-item label="综合事务部负责人" prop="zhUserId">
366
-          <el-input v-model="form.zhUserId" placeholder="请输入综合事务部负责人" />
367
-        </el-form-item>
368
-        <el-form-item label="分管领导意见" prop="managerComment">
369
-          <el-input v-model="form.managerComment" placeholder="请输入分管领导意见" />
370
-        </el-form-item>
371
-        <el-form-item label="分管领导审批时间" prop="managerTime">
372
-          <el-date-picker clearable
373
-            v-model="form.managerTime"
374
-            type="date"
375
-            value-format="yyyy-MM-dd"
376
-            placeholder="请选择分管领导审批时间">
377
-          </el-date-picker>
378
-        </el-form-item>
379
-        <el-form-item label="分管领导" prop="managerUserId">
380
-          <el-input v-model="form.managerUserId" placeholder="请输入分管领导" />
381
-        </el-form-item>
382
-        <el-form-item label="总经理意见" prop="zjlComment">
383
-          <el-input v-model="form.zjlComment" placeholder="请输入总经理意见" />
384
-        </el-form-item>
385
-        <el-form-item label="总经理审批时间" prop="zjlTime">
386
-          <el-date-picker clearable
387
-            v-model="form.zjlTime"
388
-            type="date"
389
-            value-format="yyyy-MM-dd"
390
-            placeholder="请选择总经理审批时间">
391
-          </el-date-picker>
392
-        </el-form-item>
393
-        <el-form-item label="总经理" prop="zjlUserId">
394
-          <el-input v-model="form.zjlUserId" placeholder="请输入总经理" />
395
-        </el-form-item>
396
-      </el-form>
397
-      <div slot="footer" class="dialog-footer">
398
-        <el-button type="primary" @click="submitForm">确 定</el-button>
399
-        <el-button @click="cancel">取 消</el-button>
400
-      </div>
89
+    <el-dialog :title="title" :visible.sync="open" width="65%" append-to-body>
90
+      <transfer-tab :taskForm="taskForm"></transfer-tab>
401 91
     </el-dialog>
402 92
   </div>
403 93
 </template>
404 94
 
405 95
 <script>
406 96
 import { listTransfer, getTransfer, delTransfer, addTransfer, updateTransfer } from "@/api/oa/transfer/transfer";
97
+import { getUser } from "@/api/system/user";
98
+import TransferTab from './transferTab.vue'
407 99
 
408 100
 export default {
101
+  components: { TransferTab },
409 102
   name: "Transfer",
410 103
   data() {
411 104
     return {
@@ -427,11 +120,15 @@ export default {
427 120
       title: "",
428 121
       // 是否显示弹出层
429 122
       open: false,
123
+      //所有岗位
124
+      postList: [],
125
+      //所有部门
126
+      deptList: [],
430 127
       // 查询参数
431 128
       queryParams: {
432 129
         pageNum: 1,
433 130
         pageSize: 10,
434
-        userId: null,
131
+        applier: null,
435 132
         applyDate: null,
436 133
         beforeDeptId: null,
437 134
         beforePostId: null,
@@ -457,7 +154,10 @@ export default {
457 154
       form: {},
458 155
       // 表单校验
459 156
       rules: {
460
-      }
157
+      },
158
+      taskForm: {
159
+        formId: ''
160
+      },
461 161
     };
462 162
   },
463 163
   created() {
@@ -472,6 +172,10 @@ export default {
472 172
         this.total = response.total;
473 173
         this.loading = false;
474 174
       });
175
+      getUser(this.$store.state.user.id).then(response => {
176
+        this.postList = response.posts;
177
+      });
178
+      this.deptList = this.$store.state.user.deptList
475 179
     },
476 180
     // 取消按钮
477 181
     cancel() {
@@ -506,6 +210,31 @@ export default {
506 210
       };
507 211
       this.resetForm("form");
508 212
     },
213
+    getPostById(val) {
214
+      let postname = [];
215
+      const postIds = val.split(",");
216
+      postIds.map(id => {
217
+        // 将字符ID转为数字进行比较
218
+        const numericId = Number(id);
219
+        const post = this.postList.find(post => post.postId == numericId);
220
+        if (post) {
221
+          postname.push(post.postName);
222
+        }
223
+      });
224
+
225
+      const displayText = postname.join("、");
226
+      return displayText;
227
+    },
228
+    getDeptById(val) {
229
+      const dept = this.deptList.find(dept => dept.deptId == val);
230
+      if (dept) {
231
+        return dept.deptName;
232
+      }
233
+    },
234
+    handleView(row){
235
+      this.taskForm.formId = row.transferId;
236
+      this.open = true;
237
+    },
509 238
     /** 搜索按钮操作 */
510 239
     handleQuery() {
511 240
       this.queryParams.pageNum = 1;
@@ -522,52 +251,6 @@ export default {
522 251
       this.single = selection.length!==1
523 252
       this.multiple = !selection.length
524 253
     },
525
-    /** 新增按钮操作 */
526
-    handleAdd() {
527
-      this.reset();
528
-      this.open = true;
529
-      this.title = "添加cmc调岗申请";
530
-    },
531
-    /** 修改按钮操作 */
532
-    handleUpdate(row) {
533
-      this.reset();
534
-      const transferId = row.transferId || this.ids
535
-      getTransfer(transferId).then(response => {
536
-        this.form = response.data;
537
-        this.open = true;
538
-        this.title = "修改cmc调岗申请";
539
-      });
540
-    },
541
-    /** 提交按钮 */
542
-    submitForm() {
543
-      this.$refs["form"].validate(valid => {
544
-        if (valid) {
545
-          if (this.form.transferId != null) {
546
-            updateTransfer(this.form).then(response => {
547
-              this.$modal.msgSuccess("修改成功");
548
-              this.open = false;
549
-              this.getList();
550
-            });
551
-          } else {
552
-            addTransfer(this.form).then(response => {
553
-              this.$modal.msgSuccess("新增成功");
554
-              this.open = false;
555
-              this.getList();
556
-            });
557
-          }
558
-        }
559
-      });
560
-    },
561
-    /** 删除按钮操作 */
562
-    handleDelete(row) {
563
-      const transferIds = row.transferId || this.ids;
564
-      this.$modal.confirm('是否确认删除cmc调岗申请编号为"' + transferIds + '"的数据项?').then(function() {
565
-        return delTransfer(transferIds);
566
-      }).then(() => {
567
-        this.getList();
568
-        this.$modal.msgSuccess("删除成功");
569
-      }).catch(() => {});
570
-    },
571 254
     /** 导出按钮操作 */
572 255
     handleExport() {
573 256
       this.download('oa/transfer/export', {

+ 209
- 0
oa-ui/src/views/oa/transfer/transferTab.vue Переглянути файл

@@ -0,0 +1,209 @@
1
+<template>
2
+  <div class="app-container" v-loading="loading">
3
+    <el-button type="success" @click="openPrint = true">打印</el-button>
4
+    <h3 class="text-center"><b>{{ '调岗申请表' }}</b></h3>
5
+    <el-form ref="transferForm" :model="form" :rules="rules" label-width="125px" disabled>
6
+        <el-form-item label="申请人" prop="applier" >
7
+            {{ getUserName(form.applier) }}
8
+        </el-form-item>
9
+        <el-row>
10
+        <el-col :span="6" :xs="24">
11
+            <el-form-item label="调岗前所在部门" prop="beforeDeptId" >
12
+                {{ getDeptName(form.beforeDeptId) }}
13
+            </el-form-item>
14
+        </el-col>
15
+        <el-col :span="6" :xs="24">
16
+            <el-form-item label="拟调整岗位" prop="beforePostId" >
17
+                {{ getPostById(form.beforePostId) }}
18
+            </el-form-item>
19
+        </el-col>
20
+        </el-row>
21
+        <el-row>
22
+        <el-col :span="6" :xs="24">
23
+            <el-form-item label="调岗后所在部门" prop="beforeDeptId" >
24
+                {{ getDeptName(form.afterDeptId) }}
25
+            </el-form-item>
26
+        </el-col>
27
+        <el-col :span="6" :xs="24">
28
+            <el-form-item label="调岗后岗位" prop="beforePostId" >
29
+                {{ getPostById(form.afterPostId) }}
30
+            </el-form-item>
31
+        </el-col>
32
+        </el-row>
33
+        <el-form-item label="调岗前所在部门意见:" prop="beforeDeptComment">
34
+            <el-input v-model="form.beforeDeptComment" placeholder="请输入调岗前所在部门意见" type="textarea"
35
+            :autosize="{ minRows: 4 }" />
36
+        </el-form-item>
37
+        <el-row>
38
+            <el-col :span="6" :xs="24" :offset="12">
39
+            <el-form-item label="签名" prop="deptUserId">
40
+                <span class="auditor"> {{ form.beforeDeptLeader ? getUserName(form.beforeDeptLeader) : '' }}
41
+                </span>
42
+            </el-form-item>
43
+            </el-col>
44
+            <el-col :span="6">
45
+            <el-form-item label="日期:" label-width="120px">
46
+                <span> {{ parseTime(form.beforeDeptTime, '{y}-{m}-{d}') }} </span>
47
+            </el-form-item>
48
+            </el-col>
49
+        </el-row>
50
+        <el-form-item label="调岗后所在部门意见:" prop="afterDeptComment">
51
+            <el-input v-model="form.afterDeptComment" placeholder="请输入调岗后所在部门意见:" type="textarea"
52
+            :autosize="{ minRows: 4 }" />
53
+        </el-form-item>
54
+        <el-row>
55
+            <el-col :span="6" :xs="24" :offset="12">
56
+            <el-form-item label="签名" prop="deptUserId">
57
+                <span class="auditor"> {{ form.afterDeptLeader ? getUserName(form.afterDeptLeader) : '' }}
58
+                </span>
59
+            </el-form-item>
60
+            </el-col>
61
+            <el-col :span="6">
62
+            <el-form-item label="日期:" label-width="120px">
63
+                <span> {{ parseTime(form.afterDeptTime, '{y}-{m}-{d}') }} </span>
64
+            </el-form-item>
65
+            </el-col>
66
+        </el-row>
67
+        <el-form-item label="综合事务部意见:" prop="zhComment">
68
+            <el-input v-model="form.zhComment" placeholder="请输入综合事务部意见:" type="textarea"
69
+            :autosize="{ minRows: 4 }" />
70
+        </el-form-item>
71
+        <el-row>
72
+            <el-col :span="6" :xs="24" :offset="12">
73
+            <el-form-item label="签名" prop="deptUserId">
74
+                <span class="auditor"> {{ form.zhUserId ? getUserName(form.zhUserId) : '' }}
75
+                </span>
76
+            </el-form-item>
77
+            </el-col>
78
+            <el-col :span="6">
79
+            <el-form-item label="日期:" label-width="120px">
80
+                <span> {{ parseTime(form.zhTime, '{y}-{m}-{d}') }} </span>
81
+            </el-form-item>
82
+            </el-col>
83
+        </el-row>
84
+         <el-form-item label="分管审批意见:" prop="managerComment">
85
+            <el-input v-model="form.managerComment" placeholder="请输入分管审批意见" type="textarea"
86
+            :autosize="{ minRows: 4 }" />
87
+        </el-form-item>
88
+        <el-row>
89
+            <el-col :span="6" :xs="24" :offset="12">
90
+            <el-form-item label="签名" prop="deptUserId">
91
+                <span class="auditor"> {{ form.managerUserId ? form.managerUser.nickName : '' }}
92
+                </span>
93
+            </el-form-item>
94
+            </el-col>
95
+            <el-col :span="6">
96
+            <el-form-item label="日期:" label-width="120px">
97
+                <span> {{ parseTime(form.managerTime, '{y}-{m}-{d}') }} </span>
98
+            </el-form-item>
99
+            </el-col>
100
+        </el-row>
101
+        <el-form-item label="总经理审批意见:" prop="zjlComment">
102
+            <el-input v-model="form.zjlComment" placeholder="请输入总经理审批意见" type="textarea" 
103
+            :autosize="{ minRows: 4 }" />
104
+        </el-form-item>
105
+        <el-row>
106
+            <el-col :span="6" :xs="24" :offset="12">
107
+            <el-form-item label="签名" prop="deptUserId">
108
+                <span class="auditor"> {{ form.zjlUserId ? form.zjlUser.nickName : '' }}
109
+                </span>
110
+            </el-form-item>
111
+            </el-col>
112
+            <el-col :span="6">
113
+            <el-form-item label="日期:" label-width="120px">
114
+                <span> {{ parseTime(form.zjlTime, '{y}-{m}-{d}') }} </span>
115
+            </el-form-item>
116
+            </el-col>
117
+        </el-row>
118
+    </el-form>
119
+    <el-dialog title="调岗申请表格预览" :visible.sync="openPrint" width="65%" append-to-body>
120
+       <transfer-print :form="form" @cancel="openPrint = false"></transfer-print>
121
+    </el-dialog>
122
+  </div>
123
+</template>
124
+
125
+<script>
126
+import { listTransfer, getTransfer, delTransfer, addTransfer, updateTransfer } from "@/api/oa/transfer/transfer";
127
+import { getUser } from '@/api/system/user';
128
+import { getProject } from "@/api/oa/project/project";
129
+import transferPrint from '../../flowable/form/components/print/transferPrint.vue';
130
+export default {
131
+  components: { transferPrint },
132
+  props: {
133
+    taskForm: {
134
+      type: Object,
135
+      required: true
136
+    }
137
+  },
138
+  computed: {
139
+  },
140
+  watch: {
141
+
142
+  },
143
+  data() {
144
+    return {
145
+      isEmpty: true,
146
+      form: {},
147
+      rules: {},
148
+      postList: [],
149
+      loading: false,
150
+      openPrint: false,
151
+    }
152
+  },
153
+  mounted() {
154
+    this.initForm();
155
+  },
156
+  methods: {
157
+    /** 查询cmc招聘列表 */
158
+    initForm() {
159
+      Promise.all([
160
+        getTransfer(this.taskForm.formId),
161
+        getUser(this.$store.state.user.id)
162
+      ]).then(([transferRes, userRes]) => {
163
+        if (transferRes.data) {
164
+          this.isEmpty = false;
165
+          this.form = transferRes.data;
166
+        }
167
+        this.postList = userRes.posts || [];
168
+        this.loading = false;
169
+      }).catch(error => {
170
+        console.error('初始化数据失败:', error);
171
+        this.loading = false;
172
+      });
173
+    },
174
+    getPostById(val) {
175
+      if (!val) {
176
+        return '暂无岗位信息';
177
+      }
178
+      let postname = [];
179
+      const postIds = val.split(",");
180
+      postIds.map(id => {
181
+        // 将字符ID转为数字进行比较
182
+        const numericId = Number(id);
183
+        const post = this.postList.find(post => post.postId == numericId);
184
+        if (post) {
185
+          postname.push(post.postName);
186
+        }
187
+      });
188
+
189
+      const displayText = postname.join("、");
190
+      return displayText;
191
+    },
192
+    }
193
+  }
194
+</script>
195
+
196
+<style lang="scss" scoped>
197
+::v-deep .el-input.is-disabled .el-input__inner {
198
+  color: #686a6e;
199
+}
200
+
201
+::v-deep .el-textarea.is-disabled .el-textarea__inner,
202
+.el-radio__input.is-disabled+span.el-radio__label {
203
+  color: #686a6e;
204
+}
205
+
206
+::v-deep .el-radio__input.is-disabled+span.el-radio__label {
207
+  color: #686a6e;
208
+}
209
+</style>

Завантаження…
Відмінити
Зберегти