yxk-20260728
改善提案 改善效果得分拆分为安全、质量、效率、成本四个,权重平均分
This commit is contained in:
@@ -112,9 +112,23 @@
|
||||
<a-modal v-model:open="scoreModalVisible" title="部门评议打分" :footer="null" :mask-closable="false">
|
||||
<a-form layout="vertical">
|
||||
<a-row :gutter="12">
|
||||
<a-col :xs="24" :sm="12">
|
||||
<a-col :span="24">
|
||||
<a-form-item label="改善效果(权重 50%)" required>
|
||||
<a-input-number v-model:value="scoreForm.effectScore" :min="0" :max="100" :precision="2" :disabled="scoreLocked" style="width: 100%" />
|
||||
<a-row :gutter="12">
|
||||
<a-col :xs="24" :sm="12" :lg="6">
|
||||
<a-form-item label="安全" required><a-input-number v-model:value="scoreForm.safetyScore" :min="0" :max="100" :precision="2" :disabled="scoreLocked" style="width: 100%" /></a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="12" :lg="6">
|
||||
<a-form-item label="质量" required><a-input-number v-model:value="scoreForm.qualityScore" :min="0" :max="100" :precision="2" :disabled="scoreLocked" style="width: 100%" /></a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="12" :lg="6">
|
||||
<a-form-item label="效率" required><a-input-number v-model:value="scoreForm.efficiencyScore" :min="0" :max="100" :precision="2" :disabled="scoreLocked" style="width: 100%" /></a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="12" :lg="6">
|
||||
<a-form-item label="成本" required><a-input-number v-model:value="scoreForm.costScore" :min="0" :max="100" :precision="2" :disabled="scoreLocked" style="width: 100%" /></a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
<div class="form-help">改善效果得分按安全、质量、效率、成本四项的平均分自动计算:{{ effectAveragePreview }}</div>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :xs="24" :sm="12">
|
||||
@@ -218,6 +232,11 @@
|
||||
if (!currentScore.value) return '未保存';
|
||||
return scoreLocked.value ? '评分已锁定' : '已保存,待流程提交';
|
||||
});
|
||||
const effectAveragePreview = computed(() => {
|
||||
const values = ['safetyScore', 'qualityScore', 'efficiencyScore', 'costScore'].map((key) => scoreForm.value[key]);
|
||||
if (values.some((value) => value === undefined || value === null)) return '-';
|
||||
return (values.reduce((sum, value) => sum + Number(value), 0) / values.length).toFixed(2);
|
||||
});
|
||||
const currentVote = computed(() => voteRows.value.find((item) => String(item.voterId) === currentUserId.value));
|
||||
|
||||
watch(
|
||||
@@ -318,7 +337,10 @@
|
||||
function openScoreModal() {
|
||||
const score = currentScore.value;
|
||||
scoreForm.value = {
|
||||
effectScore: score?.effectScore ?? undefined,
|
||||
safetyScore: score?.safetyScore ?? undefined,
|
||||
qualityScore: score?.qualityScore ?? undefined,
|
||||
efficiencyScore: score?.efficiencyScore ?? undefined,
|
||||
costScore: score?.costScore ?? undefined,
|
||||
promotionScore: score?.promotionScore ?? undefined,
|
||||
originalityScore: score?.originalityScore ?? undefined,
|
||||
effortScore: score?.effortScore ?? undefined,
|
||||
@@ -329,7 +351,7 @@
|
||||
|
||||
async function saveScoreDraft() {
|
||||
if (!hasValidScoreValues()) {
|
||||
createMessage.warning('请完整填写 0 到 100 分之间的四项评分');
|
||||
createMessage.warning('请完整填写 0 到 100 分之间的七项评分');
|
||||
return;
|
||||
}
|
||||
savingScore.value = true;
|
||||
@@ -346,7 +368,10 @@
|
||||
|
||||
function createEmptyScoreForm() {
|
||||
return {
|
||||
effectScore: undefined,
|
||||
safetyScore: undefined,
|
||||
qualityScore: undefined,
|
||||
efficiencyScore: undefined,
|
||||
costScore: undefined,
|
||||
promotionScore: undefined,
|
||||
originalityScore: undefined,
|
||||
effortScore: undefined,
|
||||
@@ -355,7 +380,7 @@
|
||||
}
|
||||
|
||||
function hasValidScoreValues() {
|
||||
return ['effectScore', 'promotionScore', 'originalityScore', 'effortScore'].every((key) => {
|
||||
return ['safetyScore', 'qualityScore', 'efficiencyScore', 'costScore', 'promotionScore', 'originalityScore', 'effortScore'].every((key) => {
|
||||
const value = scoreForm.value[key];
|
||||
return value !== undefined && value !== null && Number(value) >= 0 && Number(value) <= 100;
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user