yxk-20260729

改善提案
投票/打分页面逻辑优化
This commit is contained in:
ye1023
2026-07-29 10:39:10 +08:00
parent 8161e498bd
commit 354ab93f53
2 changed files with 19 additions and 8 deletions
@@ -23,6 +23,7 @@ enum Api {
bpmLeaderAward = '/improvementproposal/improvementProposal/bpm/leaderAward', bpmLeaderAward = '/improvementproposal/improvementProposal/bpm/leaderAward',
bpmInstituteVoteCandidates = '/improvementproposal/improvementProposal/bpm/instituteVoteCandidates', bpmInstituteVoteCandidates = '/improvementproposal/improvementProposal/bpm/instituteVoteCandidates',
bpmInstituteVoteMembers = '/improvementproposal/improvementProposal/bpm/instituteVoteMembers', bpmInstituteVoteMembers = '/improvementproposal/improvementProposal/bpm/instituteVoteMembers',
bpmSubmitInstituteVote = '/improvementproposal/improvementProposal/bpm/submitInstituteVote',
bpmArchiveAward = '/improvementproposal/improvementProposal/bpm/archiveAward', bpmArchiveAward = '/improvementproposal/improvementProposal/bpm/archiveAward',
bpmInstituteVote = '/improvementproposal/improvementProposal/bpm/instituteVote', bpmInstituteVote = '/improvementproposal/improvementProposal/bpm/instituteVote',
} }
@@ -115,3 +116,4 @@ export const queryInstituteVoteCandidates = (params) => defHttp.get({ url: Api.b
export const saveInstituteVoteMembers = (params) => defHttp.post({ url: Api.bpmInstituteVoteMembers, params }); export const saveInstituteVoteMembers = (params) => defHttp.post({ url: Api.bpmInstituteVoteMembers, params });
export const saveArchiveAward = (params) => defHttp.post({ url: Api.bpmArchiveAward, params }); export const saveArchiveAward = (params) => defHttp.post({ url: Api.bpmArchiveAward, params });
export const castInstituteVote = (params) => defHttp.post({ url: Api.bpmInstituteVote, params }); export const castInstituteVote = (params) => defHttp.post({ url: Api.bpmInstituteVote, params });
export const submitInstituteVote = (params) => defHttp.post({ url: Api.bpmSubmitInstituteVote, params });
@@ -88,8 +88,8 @@
<template v-if="isTask('Task_improve005')"> <template v-if="isTask('Task_improve005')">
<a-form-item label="我的投票"> <a-form-item label="我的投票">
<a-space v-if="currentVote"> <a-space v-if="currentVote">
<a-button type="primary" :disabled="currentVote.voteStatus === 'voted'" :loading="savingVote" @click="castVote('agree')">同意</a-button> <a-button :type="currentVote.voteResult === 'agree' ? 'primary' : 'default'" :disabled="voteLocked" :loading="savingVote" @click="saveVoteDraft('agree')">投票通过</a-button>
<a-button danger :disabled="currentVote.voteStatus === 'voted'" :loading="savingVote" @click="castVote('disagree')">不同意</a-button> <a-button danger :type="currentVote.voteResult === 'disagree' ? 'primary' : 'default'" :disabled="voteLocked" :loading="savingVote" @click="saveVoteDraft('disagree')">投票反对</a-button>
<span>{{ voteResultLabel(currentVote) }}</span> <span>{{ voteResultLabel(currentVote) }}</span>
</a-space> </a-space>
<span v-else class="form-help">当前用户不在所级评议投票名单中</span> <span v-else class="form-help">当前用户不在所级评议投票名单中</span>
@@ -188,6 +188,7 @@
saveInitialReview, saveInitialReview,
saveInstituteVoteMembers, saveInstituteVoteMembers,
saveLeaderAward, saveLeaderAward,
submitInstituteVote,
submitDeptScore, submitDeptScore,
} from '../ImprovementProposal.api'; } from '../ImprovementProposal.api';
@@ -256,6 +257,7 @@
return awardOptions.filter((item) => Number(item.value) >= Number(leaderAwardBase.value)); return awardOptions.filter((item) => Number(item.value) >= Number(leaderAwardBase.value));
}); });
const currentVote = computed(() => voteRows.value.find((item) => String(item.voterId) === currentUserId.value)); const currentVote = computed(() => voteRows.value.find((item) => String(item.voterId) === currentUserId.value));
const voteLocked = computed(() => currentVote.value?.voteStatus === 'voted');
watch( watch(
() => [processInfo.value.mainId, processInfo.value.processInstanceId, processInfo.value.taskId, processInfo.value.taskDefKey], () => [processInfo.value.mainId, processInfo.value.processInstanceId, processInfo.value.taskId, processInfo.value.taskDefKey],
@@ -349,9 +351,12 @@
} }
await saveInstituteVoteMembers(actionPayload({ voterIds: selectedInstituteVoterIds.value })); await saveInstituteVoteMembers(actionPayload({ voterIds: selectedInstituteVoterIds.value }));
} }
if (isTask('Task_improve005') && currentVote.value?.voteStatus !== 'voted') { if (isTask('Task_improve005')) {
createMessage.warning('请先完成投票'); if (!currentVote.value?.voteResult) {
return false; createMessage.warning('请先选择投票通过或投票反对');
return false;
}
await submitInstituteVote(actionPayload());
} }
if (isTask('Task_improve006')) { if (isTask('Task_improve006')) {
if (!finalAward.value) { if (!finalAward.value) {
@@ -367,11 +372,11 @@
} }
} }
async function castVote(voteResult: string) { async function saveVoteDraft(voteResult: string) {
savingVote.value = true; savingVote.value = true;
try { try {
await castInstituteVote(actionPayload({ voteResult })); await castInstituteVote(actionPayload({ voteResult }));
createMessage.success('投票成功'); createMessage.success('投票已保存,提交办理前可修改');
await loadProposal(); await loadProposal();
} catch (error: any) { } catch (error: any) {
createMessage.warning(error?.message || '投票失败'); createMessage.warning(error?.message || '投票失败');
@@ -438,7 +443,11 @@
} }
function voteResultLabel(vote: Recordable) { function voteResultLabel(vote: Recordable) {
if (vote.voteStatus !== 'voted') return '待投票'; if (vote.voteStatus !== 'voted') {
if (vote.voteResult === 'agree') return '已选择投票通过,待提交办理';
if (vote.voteResult === 'disagree') return '已选择投票反对,待提交办理';
return '待投票';
}
return vote.voteResult === 'agree' ? '已投同意票' : '已投不同意票'; return vote.voteResult === 'agree' ? '已投同意票' : '已投不同意票';
} }