fix: 兼容旧数据,显示已有单价分值和时长

This commit is contained in:
Your Name 2026-01-05 20:06:56 +08:00
parent 874abf35cf
commit b20c9e1361

View File

@ -135,11 +135,16 @@
</span>
</template>
<template v-else-if="column.key === 'unitScore'">
<span v-if="getDemandTypeLevel(record) === 3">{{ record.unitScore ?? '--' }}</span>
<!-- 三级分类显示单价,或者有单价值的也显示(兼容旧数据) -->
<span v-if="getDemandTypeLevel(record) === 3 || (record.unitScore && record.unitScore > 0)">
{{ record.unitScore ?? '--' }}
</span>
<span v-else class="text-muted">--</span>
</template>
<template v-else-if="column.key === 'estimatedHours'">
<span v-if="getDemandTypeLevel(record) === 3">{{ record.estimatedHours ?? '--' }}</span>
<span v-if="getDemandTypeLevel(record) === 3 || (record.estimatedHours && record.estimatedHours > 0)">
{{ record.estimatedHours ?? '--' }}
</span>
<span v-else class="text-muted">--</span>
</template>
<template v-else-if="column.key === 'allowedDepts'">
@ -1187,21 +1192,37 @@
width="600px"
>
<a-form :model="formData.demandType" layout="vertical">
<!-- 编辑时允许调整级别 -->
<a-form-item v-if="editingItem" label="调整级别">
<a-radio-group v-model:value="formData.demandType.addLevel" @change="onLevelChange">
<a-radio value="level1">一级分类</a-radio>
<a-radio value="level2">二级分类</a-radio>
<a-radio value="level3">三级分类</a-radio>
</a-radio-group>
<div class="form-tip">
<Icon name="info" size="sm" color="#6B6B6B" style="margin-right: 4px;" />
调整级别后需要选择对应的上级分类
</div>
</a-form-item>
<!-- 选择所属一级分类(二级分类显示) -->
<a-form-item v-if="formData.demandType.addLevel === 'level2'" label="所属一级分类" required>
<a-select
v-model:value="formData.demandType.parentId"
placeholder="请选择所属一级分类"
:disabled="!!editingItem"
>
<a-select-option
v-for="parent in level1DemandTypes"
v-for="parent in level1DemandTypes.filter(p => p.id !== formData.demandType.id)"
:key="parent.id"
:value="parent.id"
>
{{ parent.name }}
</a-select-option>
</a-select>
<div v-if="editingItem" class="form-tip">
<Icon name="info" size="sm" color="#6B6B6B" style="margin-right: 4px;" />
可以修改所属分类来调整层级
</div>
</a-form-item>
<!-- 选择所属二级分类(三级分类显示) -->
@ -1209,16 +1230,19 @@
<a-select
v-model:value="formData.demandType.parentId"
placeholder="请选择所属二级分类"
:disabled="!!editingItem"
>
<a-select-option
v-for="parent in level2DemandTypes"
v-for="parent in level2DemandTypes.filter(p => p.id !== formData.demandType.id)"
:key="parent.id"
:value="parent.id"
>
{{ getLevel2DisplayName(parent) }}
</a-select-option>
</a-select>
<div v-if="editingItem" class="form-tip">
<Icon name="info" size="sm" color="#6B6B6B" style="margin-right: 4px;" />
可以修改所属分类来调整层级
</div>
</a-form-item>
<a-form-item label="类型名称" required>
@ -2224,6 +2248,22 @@ const getLevel2DisplayName = (level2: DemandType) => {
return level1 ? `${level1.name} / ${level2.name}` : level2.name
}
// 级别变更时重置父级ID
const onLevelChange = () => {
formData.demandType.parentId = null
// 如果改为一级分类,清除部门设置
if (formData.demandType.addLevel === 'level1') {
formData.demandType.departmentIds = []
formData.demandType.unitScore = 0
formData.demandType.estimatedHours = null
}
// 如果改为二级分类,清除分值
if (formData.demandType.addLevel === 'level2') {
formData.demandType.unitScore = 0
formData.demandType.estimatedHours = null
}
}
const leaderOptions = computed(() =>
allUsers.value.map((user) => ({
label: user.realName || user.username || `用户${user.id}`,