Commit 810e2805 authored by 李文光's avatar 李文光

fix: complete JD approval workflow

parent 5f6b4553
......@@ -129,17 +129,38 @@ const confirmOwner = async () => {
} catch {
return
}
confirmOwnerCore()
}
const confirmOwnerCore = (notify = true) => {
if (!job.value) return
job.value.approvalStatus = APPROVAL_STATUS.DEPARTMENT_CONFIRMED
if (job.value.jdStatus === JD_STATUS.DRAFT) job.value.jdStatus = JD_STATUS.PENDING_CONFIRM
appendJdHistory('用人部门确认JD内容')
store.completeTasksForJob(job.value, [/JD需求|调研反馈|用人部门/])
store.persist('用人部门已确认JD')
showToast('已记录用人确认,下一步可提交审批')
if (notify) showToast('已记录用人确认,下一步可提交审批')
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 () => {
if (!job.value) return
if (job.value.approvalStatus !== APPROVAL_STATUS.DEPARTMENT_CONFIRMED) {
showToast('请先在「用人确认」确认 JD 内容', 'warning')
activeStep.value = 2
return
}
try {
await ElMessageBox.confirm('提交后 JD 进入审批中,期间不可直接编辑生效。确认提交审批?', '提交审批', {
confirmButtonText: '提交审批',
......@@ -149,13 +170,33 @@ const submitApproval = async () => {
} catch {
return
}
job.value.jdStatus = JD_STATUS.APPROVING
job.value.approvalStatus = APPROVAL_STATUS.APPROVING
appendJdHistory('提交JD审批')
ensureTask('跟进JD审批结果', '岗位管理', job.value.title, '中', '今日')
store.persist('JD已提交审批')
showToast('JD 已提交审批,已生成跟进待办')
activeStep.value = 3
submitApprovalCore()
}
const confirmAndSubmitApproval = async () => {
if (!job.value) return
if (!hasJdContent.value) {
showToast('请先生成 JD 草稿', 'warning')
return
}
if (job.value.jdStatus === JD_STATUS.APPROVING) {
showToast('JD 已在审批中', 'warning')
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 = () => {
......@@ -700,22 +741,28 @@ const mainAction = async () => {
</div>
<div class="step-pane-actions">
<el-button
v-if="jdPendingConfirm"
v-if="jdPendingConfirm && !jdConfirmed"
size="small"
type="primary"
:disabled="!hasJdContent"
@click="confirmOwner"
@click="confirmAndSubmitApproval"
>
确认 JD 内容
确认并提交审批
</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 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>
</div>
</div>
<div v-if="jdPendingConfirm && !jdConfirmed" class="step-action-hint">
{{ hasJdContent ? '先点击「确认 JD 内容」,确认后即可提交审批。' : '先生成 JD 草稿,再回来确认内容。' }}
{{
hasJdContent
? '可以先一键「确认并提交审批」,也可以先点「仅确认内容」再单独提交。'
: '先生成 JD 草稿,再回来确认内容。'
}}
</div>
<div class="step-fields">
<div>
......
......@@ -100,13 +100,13 @@ export function jobActionFor(job = {}) {
const approving = job.jdStatus === JD_STATUS.APPROVING
const confirmed = job.approvalStatus === APPROVAL_STATUS.DEPARTMENT_CONFIRMED
return {
title: approving ? '确认 JD 生效' : confirmed ? '提交 JD 审批' : '确认 JD 后发布',
title: approving ? '确认 JD 生效' : confirmed ? '提交 JD 审批' : '确认并提交 JD 审批',
description: approving
? 'JD 已提交审批,审批通过后正式生效并进入发布。'
: confirmed
? '用人部门已确认 JD,下一步提交审批。'
: '草稿已生成,先确认内容,再提交审批并进入发布。',
label: approving ? '去确认生效' : confirmed ? '提交审批' : '去确认 JD',
: '草稿已生成,先在用人确认里核对内容,可直接确认并提交审批。',
label: approving ? '去确认生效' : confirmed ? '提交审批' : '去确认并提交',
tab: 'flow',
step: approving ? 3 : 2,
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment