Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
R
recruit-sys
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李文光
recruit-sys
Commits
810e2805
Commit
810e2805
authored
Sep 02, 2026
by
李文光
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix: complete JD approval workflow
parent
5f6b4553
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
64 additions
and
17 deletions
+64
-17
JobDetail.vue
vue-app/src/components/jobs/JobDetail.vue
+61
-14
jobFlow.js
vue-app/src/utils/jobFlow.js
+3
-3
No files found.
vue-app/src/components/jobs/JobDetail.vue
View file @
810e2805
...
@@ -129,17 +129,38 @@ const confirmOwner = async () => {
...
@@ -129,17 +129,38 @@ const confirmOwner = async () => {
}
catch
{
}
catch
{
return
return
}
}
confirmOwnerCore
()
}
const
confirmOwnerCore
=
(
notify
=
true
)
=>
{
if
(
!
job
.
value
)
return
job
.
value
.
approvalStatus
=
APPROVAL_STATUS
.
DEPARTMENT_CONFIRMED
job
.
value
.
approvalStatus
=
APPROVAL_STATUS
.
DEPARTMENT_CONFIRMED
if
(
job
.
value
.
jdStatus
===
JD_STATUS
.
DRAFT
)
job
.
value
.
jdStatus
=
JD_STATUS
.
PENDING_CONFIRM
if
(
job
.
value
.
jdStatus
===
JD_STATUS
.
DRAFT
)
job
.
value
.
jdStatus
=
JD_STATUS
.
PENDING_CONFIRM
appendJdHistory
(
'用人部门确认JD内容'
)
appendJdHistory
(
'用人部门确认JD内容'
)
store
.
completeTasksForJob
(
job
.
value
,
[
/JD需求|调研反馈|用人部门/
])
store
.
completeTasksForJob
(
job
.
value
,
[
/JD需求|调研反馈|用人部门/
])
store
.
persist
(
'用人部门已确认JD'
)
store
.
persist
(
'用人部门已确认JD'
)
showToast
(
'已记录用人确认,下一步可提交审批'
)
if
(
notify
)
showToast
(
'已记录用人确认,下一步可提交审批'
)
activeStep
.
value
=
2
activeStep
.
value
=
2
}
}
const
submitApprovalCore
=
(
notify
=
true
)
=>
{
if
(
!
job
.
value
)
return
job
.
value
.
jdStatus
=
JD_STATUS
.
APPROVING
job
.
value
.
approvalStatus
=
APPROVAL_STATUS
.
APPROVING
appendJdHistory
(
'提交JD审批'
)
ensureTask
(
'跟进JD审批结果'
,
'岗位管理'
,
job
.
value
.
title
,
'中'
,
'今日'
)
store
.
persist
(
'JD已提交审批'
)
if
(
notify
)
showToast
(
'JD 已提交审批,已生成跟进待办'
)
activeStep
.
value
=
3
}
const
submitApproval
=
async
()
=>
{
const
submitApproval
=
async
()
=>
{
if
(
!
job
.
value
)
return
if
(
!
job
.
value
)
return
if
(
job
.
value
.
approvalStatus
!==
APPROVAL_STATUS
.
DEPARTMENT_CONFIRMED
)
{
showToast
(
'请先在「用人确认」确认 JD 内容'
,
'warning'
)
activeStep
.
value
=
2
return
}
try
{
try
{
await
ElMessageBox
.
confirm
(
'提交后 JD 进入审批中,期间不可直接编辑生效。确认提交审批?'
,
'提交审批'
,
{
await
ElMessageBox
.
confirm
(
'提交后 JD 进入审批中,期间不可直接编辑生效。确认提交审批?'
,
'提交审批'
,
{
confirmButtonText
:
'提交审批'
,
confirmButtonText
:
'提交审批'
,
...
@@ -149,13 +170,33 @@ const submitApproval = async () => {
...
@@ -149,13 +170,33 @@ const submitApproval = async () => {
}
catch
{
}
catch
{
return
return
}
}
job
.
value
.
jdStatus
=
JD_STATUS
.
APPROVING
submitApprovalCore
()
job
.
value
.
approvalStatus
=
APPROVAL_STATUS
.
APPROVING
}
appendJdHistory
(
'提交JD审批'
)
ensureTask
(
'跟进JD审批结果'
,
'岗位管理'
,
job
.
value
.
title
,
'中'
,
'今日'
)
const
confirmAndSubmitApproval
=
async
()
=>
{
store
.
persist
(
'JD已提交审批'
)
if
(
!
job
.
value
)
return
showToast
(
'JD 已提交审批,已生成跟进待办'
)
if
(
!
hasJdContent
.
value
)
{
showToast
(
'请先生成 JD 草稿'
,
'warning'
)
return
}
if
(
job
.
value
.
jdStatus
===
JD_STATUS
.
APPROVING
)
{
showToast
(
'JD 已在审批中'
,
'warning'
)
activeStep
.
value
=
3
activeStep
.
value
=
3
return
}
try
{
await
ElMessageBox
.
confirm
(
'确认 JD 内容后会直接提交审批,确认继续?'
,
'确认并提交审批'
,
{
confirmButtonText
:
'确认并提交'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
,
})
}
catch
{
return
}
if
(
job
.
value
.
approvalStatus
!==
APPROVAL_STATUS
.
DEPARTMENT_CONFIRMED
)
{
confirmOwnerCore
(
false
)
}
submitApprovalCore
()
}
}
const
confirmMatchRules
=
()
=>
{
const
confirmMatchRules
=
()
=>
{
...
@@ -700,22 +741,28 @@ const mainAction = async () => {
...
@@ -700,22 +741,28 @@ const mainAction = async () => {
<
/div
>
<
/div
>
<
div
class
=
"step-pane-actions"
>
<
div
class
=
"step-pane-actions"
>
<
el
-
button
<
el
-
button
v
-
if
=
"jdPendingConfirm"
v
-
if
=
"jdPendingConfirm
&& !jdConfirmed
"
size
=
"small"
size
=
"small"
type
=
"primary"
type
=
"primary"
:
disabled
=
"!hasJdContent"
@
click
=
"confirmAndSubmitApproval"
@
click
=
"confirmOwner"
>
>
确认
JD
内容
确认
并提交审批
<
/el-button
>
<
/el-button
>
<
el
-
button
v
-
if
=
"jdPendingConfirm
"
size
=
"small"
:
disabled
=
"!jdConfirmed
"
@
click
=
"submitApproval"
>
<
el
-
button
v
-
if
=
"jdPendingConfirm
&& jdConfirmed"
size
=
"small
"
@
click
=
"submitApproval"
>
提交审批
提交审批
<
/el-button
>
<
/el-button
>
<
el
-
button
v
-
if
=
"jdPendingConfirm && !jdConfirmed"
size
=
"small"
@
click
=
"confirmOwner"
>
仅确认内容
<
/el-button
>
<
el
-
tag
v
-
if
=
"job.jdStatus === JD_STATUS.APPROVING"
type
=
"warning"
size
=
"small"
>
审批进行中
<
/el-tag
>
<
el
-
tag
v
-
if
=
"job.jdStatus === JD_STATUS.APPROVING"
type
=
"warning"
size
=
"small"
>
审批进行中
<
/el-tag
>
<
/div
>
<
/div
>
<
/div
>
<
/div
>
<
div
v
-
if
=
"jdPendingConfirm && !jdConfirmed"
class
=
"step-action-hint"
>
<
div
v
-
if
=
"jdPendingConfirm && !jdConfirmed"
class
=
"step-action-hint"
>
{{
hasJdContent
?
'先点击「确认 JD 内容」,确认后即可提交审批。'
:
'先生成 JD 草稿,再回来确认内容。'
}}
{{
hasJdContent
?
'可以先一键「确认并提交审批」,也可以先点「仅确认内容」再单独提交。'
:
'先生成 JD 草稿,再回来确认内容。'
}}
<
/div
>
<
/div
>
<
div
class
=
"step-fields"
>
<
div
class
=
"step-fields"
>
<
div
>
<
div
>
...
...
vue-app/src/utils/jobFlow.js
View file @
810e2805
...
@@ -100,13 +100,13 @@ export function jobActionFor(job = {}) {
...
@@ -100,13 +100,13 @@ export function jobActionFor(job = {}) {
const
approving
=
job
.
jdStatus
===
JD_STATUS
.
APPROVING
const
approving
=
job
.
jdStatus
===
JD_STATUS
.
APPROVING
const
confirmed
=
job
.
approvalStatus
===
APPROVAL_STATUS
.
DEPARTMENT_CONFIRMED
const
confirmed
=
job
.
approvalStatus
===
APPROVAL_STATUS
.
DEPARTMENT_CONFIRMED
return
{
return
{
title
:
approving
?
'确认 JD 生效'
:
confirmed
?
'提交 JD 审批'
:
'确认
JD 后发布
'
,
title
:
approving
?
'确认 JD 生效'
:
confirmed
?
'提交 JD 审批'
:
'确认
并提交 JD 审批
'
,
description
:
approving
description
:
approving
?
'JD 已提交审批,审批通过后正式生效并进入发布。'
?
'JD 已提交审批,审批通过后正式生效并进入发布。'
:
confirmed
:
confirmed
?
'用人部门已确认 JD,下一步提交审批。'
?
'用人部门已确认 JD,下一步提交审批。'
:
'草稿已生成,先
确认内容,再提交审批并进入发布
。'
,
:
'草稿已生成,先
在用人确认里核对内容,可直接确认并提交审批
。'
,
label
:
approving
?
'去确认生效'
:
confirmed
?
'提交审批'
:
'去确认
JD
'
,
label
:
approving
?
'去确认生效'
:
confirmed
?
'提交审批'
:
'去确认
并提交
'
,
tab
:
'flow'
,
tab
:
'flow'
,
step
:
approving
?
3
:
2
,
step
:
approving
?
3
:
2
,
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment