yxk-20260728
改善提案 在 Task_improve003 部门负责人审核节点,负责人只能选择基准奖项本档或更低档奖项,不允许升档。基准奖项按是否经过部门评议确定: need_dept_score='1':以 suggested_award 为基准。 未经过部门评议:以 initial_award 为基准。 奖项编码保持现有顺序:0=金奖、1=银奖、2=铜奖、3=参与奖;编码数值大于等于基准编码即为本档或降档。
This commit is contained in:
@@ -46,7 +46,7 @@
|
||||
|
||||
<template v-if="isTask('Task_improve002')">
|
||||
<a-form-item label="我的评分">
|
||||
<a-descriptions bordered size="small" :column="2">
|
||||
<a-descriptions bordered size="small" :column="1">
|
||||
<a-descriptions-item label="评分状态">{{ scoreStatusLabel }}</a-descriptions-item>
|
||||
<a-descriptions-item label="加权总分">{{ currentScore?.totalScore ?? '-' }}</a-descriptions-item>
|
||||
<a-descriptions-item label="评分时间" :span="2">{{ formatDateTime(currentScore?.scoreTime) }}</a-descriptions-item>
|
||||
@@ -59,13 +59,15 @@
|
||||
|
||||
<template v-if="isTask('Task_improve003')">
|
||||
<a-form-item label="初步评定奖项">{{ awardLabel(proposal.initialAward) }}</a-form-item>
|
||||
<a-form-item v-if="proposal.needDeptScore === '1'" label="部门评议结果">
|
||||
平均分:{{ proposal.deptAvgScore ?? '-' }};系统建议奖项:{{ awardLabel(proposal.suggestedAward) }}
|
||||
<a-form-item v-if="proposal.needDeptScore === '1'" label="部门评议小组打分结果">
|
||||
平均分:{{ proposal.deptAvgScore ?? '-' }};建议奖项:{{ awardLabel(proposal.suggestedAward) }}
|
||||
</a-form-item>
|
||||
<a-form-item label="负责人确认奖项" required>
|
||||
<a-radio-group v-model:value="leaderFinalAward">
|
||||
<a-radio v-for="item in awardOptions" :key="item.value" :value="item.value">{{ item.label }}</a-radio>
|
||||
<a-radio-group v-if="leaderAwardBase" v-model:value="leaderFinalAward">
|
||||
<a-radio v-for="item in leaderAwardOptions" :key="item.value" :value="item.value">{{ item.label }}</a-radio>
|
||||
</a-radio-group>
|
||||
<div v-if="leaderAwardBase" class="form-help">评定基准:{{ awardLabel(leaderAwardBase) }},仅可选择当前档位或降档奖项。</div>
|
||||
<div v-else class="form-help">部门评议建议奖项尚未生成,暂不能确认负责人奖项。</div>
|
||||
</a-form-item>
|
||||
</template>
|
||||
|
||||
@@ -109,8 +111,9 @@
|
||||
/>
|
||||
</template>
|
||||
|
||||
<a-modal v-model:open="scoreModalVisible" title="部门评议打分" :footer="null" :mask-closable="false">
|
||||
<a-modal v-model:open="scoreModalVisible" title="部门评议打分" :footer="null" :mask-closable="false" :body-style="{ padding: '24px 28px 20px' }">
|
||||
<a-form layout="vertical">
|
||||
<a-alert class="score-range-alert" type="info" show-icon message="所有评分项均须填写 0-100 分,最多可保留两位小数。" />
|
||||
<a-row :gutter="12">
|
||||
<a-col :span="24">
|
||||
<a-form-item label="改善效果(权重 50%)" required>
|
||||
@@ -237,6 +240,15 @@
|
||||
if (values.some((value) => value === undefined || value === null)) return '-';
|
||||
return (values.reduce((sum, value) => sum + Number(value), 0) / values.length).toFixed(2);
|
||||
});
|
||||
// 部门评分完成后必须以系统建议奖项为基准,不能回退到初审奖项。
|
||||
const leaderAwardBase = computed(() => {
|
||||
const award = proposal.value.needDeptScore === '1' ? proposal.value.suggestedAward : proposal.value.initialAward;
|
||||
return awardOptions.some((item) => item.value === String(award)) ? String(award) : '';
|
||||
});
|
||||
const leaderAwardOptions = computed(() => {
|
||||
if (!leaderAwardBase.value) return [];
|
||||
return awardOptions.filter((item) => Number(item.value) >= Number(leaderAwardBase.value));
|
||||
});
|
||||
const currentVote = computed(() => voteRows.value.find((item) => String(item.voterId) === currentUserId.value));
|
||||
|
||||
watch(
|
||||
@@ -297,10 +309,18 @@
|
||||
await submitDeptScore(actionPayload());
|
||||
}
|
||||
if (isTask('Task_improve003')) {
|
||||
if (!leaderAwardBase.value) {
|
||||
createMessage.warning('部门评议建议奖项尚未生成,不能确认负责人奖项');
|
||||
return false;
|
||||
}
|
||||
if (!leaderFinalAward.value) {
|
||||
createMessage.warning('请选择负责人确认奖项');
|
||||
return false;
|
||||
}
|
||||
if (!leaderAwardOptions.value.some((item) => item.value === leaderFinalAward.value)) {
|
||||
createMessage.warning('负责人确认奖项只能选择当前档位或降档奖项');
|
||||
return false;
|
||||
}
|
||||
await saveLeaderAward(actionPayload({ leaderFinalAward: leaderFinalAward.value }));
|
||||
}
|
||||
if (isTask('Task_improve005') && currentVote.value?.voteStatus !== 'voted') {
|
||||
@@ -358,6 +378,7 @@
|
||||
try {
|
||||
await saveDeptScore(actionPayload(scoreForm.value));
|
||||
createMessage.success('评分保存成功,可在流程提交前继续修改');
|
||||
scoreModalVisible.value = false;
|
||||
await loadProposal();
|
||||
} catch (error: any) {
|
||||
createMessage.warning(error?.message || '评分保存失败');
|
||||
@@ -452,6 +473,10 @@
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.score-range-alert {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.attachment-grid {
|
||||
grid-template-columns: 1fr;
|
||||
|
||||
Reference in New Issue
Block a user