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

fix: complete JD approval workflow

parent 5f6b4553
...@@ -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) {
activeStep.value = 3 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 = () => { 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>
......
...@@ -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,
} }
......
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