yxk-20260729
改善提案 将 Task_improve006 的所级评议结果从单行纯文本改为紧凑的票数与结果展示区,强化不同票数和评议结论的辨识度。
This commit is contained in:
@@ -62,7 +62,7 @@
|
||||
<a-form-item v-if="proposal.needDeptScore === '1'" label="部门评议小组打分结果">
|
||||
平均分:{{ proposal.deptAvgScore ?? '-' }};建议奖项:{{ awardLabel(proposal.suggestedAward) }}
|
||||
</a-form-item>
|
||||
<a-form-item label="负责人确认奖项" required>
|
||||
<a-form-item label="部门负责人确认奖项" required>
|
||||
<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>
|
||||
@@ -72,7 +72,7 @@
|
||||
</template>
|
||||
|
||||
<template v-if="isTask('Task_improve004')">
|
||||
<a-form-item label="负责人确认奖项">{{ awardLabel(proposal.leaderFinalAward) }}</a-form-item>
|
||||
<a-form-item label="申请部门负责人确认奖项">{{ awardLabel(proposal.leaderFinalAward) }}</a-form-item>
|
||||
<a-form-item label="所级评议人员" required>
|
||||
<a-checkbox-group v-model:value="selectedInstituteVoterIds" class="vote-member-grid">
|
||||
<a-checkbox v-for="member in instituteVoteCandidates" :key="member.id" :value="member.id" class="vote-member-option">
|
||||
@@ -100,9 +100,32 @@
|
||||
</template>
|
||||
|
||||
<template v-if="isTask('Task_improve006')">
|
||||
<a-form-item label="负责人确认奖项">{{ awardLabel(proposal.leaderFinalAward) }}</a-form-item>
|
||||
<a-form-item label="申请部门负责人确认奖项">{{ awardLabel(proposal.leaderFinalAward) }}</a-form-item>
|
||||
<a-form-item v-if="proposal.isneedvote === '1'" label="所级评议结果">
|
||||
同意票:{{ proposal.instituteAgreeCount ?? '-' }};不同意票:{{ proposal.instituteDisagreeCount ?? '-' }};结果:{{ proposal.instituteVoteResult || '-' }}
|
||||
<div class="institute-vote-summary">
|
||||
<span class="institute-vote-summary-item institute-vote-total">
|
||||
<span class="institute-vote-summary-label">总票数</span>
|
||||
<strong>{{ proposal.instituteTotalVoters ?? '-' }}</strong>
|
||||
</span>
|
||||
<span class="institute-vote-summary-item institute-vote-agree">
|
||||
<span class="institute-vote-summary-label">同意票</span>
|
||||
<strong>{{ proposal.instituteAgreeCount ?? '-' }}</strong>
|
||||
</span>
|
||||
<span class="institute-vote-summary-item institute-vote-disagree">
|
||||
<span class="institute-vote-summary-label">不同意票</span>
|
||||
<strong>{{ proposal.instituteDisagreeCount ?? '-' }}</strong>
|
||||
</span>
|
||||
<span
|
||||
class="institute-vote-summary-item institute-vote-result"
|
||||
:class="{
|
||||
'is-passed': proposal.instituteVoteResult === '通过',
|
||||
'is-failed': proposal.instituteVoteResult === '不通过',
|
||||
}"
|
||||
>
|
||||
<span class="institute-vote-summary-label">结果</span>
|
||||
<strong>{{ proposal.instituteVoteResult || '-' }}</strong>
|
||||
</span>
|
||||
</div>
|
||||
</a-form-item>
|
||||
<a-form-item label="最终奖项" required>
|
||||
<a-radio-group v-model:value="finalAward">
|
||||
@@ -292,7 +315,7 @@
|
||||
voteRows.value = votes || [];
|
||||
initialAward.value = proposal.value.initialAward || '';
|
||||
leaderFinalAward.value = proposal.value.leaderFinalAward || '';
|
||||
finalAward.value = proposal.value.finalAward || '';
|
||||
finalAward.value = resolveInitialFinalAward(proposal.value);
|
||||
if (isTask('Task_improve004') && processInfo.value.processInstanceId && processInfo.value.taskId) {
|
||||
instituteVoteCandidates.value = await queryInstituteVoteCandidates(processInfo.value);
|
||||
const candidateIds = new Set(instituteVoteCandidates.value.map((item) => String(item.id)));
|
||||
@@ -319,6 +342,17 @@
|
||||
return { ...processInfo.value, ...extra };
|
||||
}
|
||||
|
||||
/**
|
||||
* 归档节点优先回显已保存的最终奖项;仅首次办理时按所级评议或部门负责人结论预选,
|
||||
* 金奖所级评议不通过必须由经办人手动确认,不能自动带入任何奖项。
|
||||
*/
|
||||
function resolveInitialFinalAward(data: Recordable) {
|
||||
if (data.finalAward) return String(data.finalAward);
|
||||
if (!isTask('Task_improve006')) return '';
|
||||
if (data.isneedvote === '1') return data.instituteVoteResult === '通过' ? '0' : '';
|
||||
return data.isneedvote === '0' ? String(data.leaderFinalAward || '') : '';
|
||||
}
|
||||
|
||||
async function saveNodeAction() {
|
||||
try {
|
||||
if (isTask('Task_improve001')) {
|
||||
@@ -338,11 +372,11 @@
|
||||
return false;
|
||||
}
|
||||
if (!leaderFinalAward.value) {
|
||||
createMessage.warning('请选择负责人确认奖项');
|
||||
createMessage.warning('请选择部门负责人确认奖项');
|
||||
return false;
|
||||
}
|
||||
if (!leaderAwardOptions.value.some((item) => item.value === leaderFinalAward.value)) {
|
||||
createMessage.warning('负责人确认奖项只能选择当前档位或降档奖项');
|
||||
createMessage.warning('部门负责人确认奖项只能选择当前档位或降档奖项');
|
||||
return false;
|
||||
}
|
||||
await saveLeaderAward(actionPayload({ leaderFinalAward: leaderFinalAward.value }));
|
||||
@@ -519,6 +553,43 @@
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.institute-vote-summary {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 8px 20px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.institute-vote-summary-item {
|
||||
display: inline-flex;
|
||||
align-items: baseline;
|
||||
gap: 6px;
|
||||
min-width: 96px;
|
||||
color: #64748b;
|
||||
|
||||
strong {
|
||||
color: #334155;
|
||||
font-size: 16px;
|
||||
}
|
||||
}
|
||||
|
||||
.institute-vote-summary-label {
|
||||
font-size: 13px;
|
||||
}
|
||||
|
||||
.institute-vote-agree strong {
|
||||
color: #1677ff;
|
||||
}
|
||||
|
||||
.institute-vote-disagree strong,
|
||||
.institute-vote-result.is-failed strong {
|
||||
color: #cf1322;
|
||||
}
|
||||
|
||||
.institute-vote-result.is-passed strong {
|
||||
color: #389e0d;
|
||||
}
|
||||
|
||||
.vote-action-panel {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@@ -594,6 +665,10 @@
|
||||
}
|
||||
|
||||
@media (max-width: 576px) {
|
||||
.institute-vote-summary-item {
|
||||
flex: 1 1 120px;
|
||||
}
|
||||
|
||||
.vote-action-buttons {
|
||||
grid-template-columns: 1fr;
|
||||
width: min(100%, 280px);
|
||||
|
||||
Reference in New Issue
Block a user