fix(产品需求、项目需求): 按照会议所说进行修改。
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
<script setup lang="ts">
|
||||
import { computed, nextTick, ref, watch } from 'vue';
|
||||
import { useResizeObserver } from '@vueuse/core';
|
||||
import dayjs from 'dayjs';
|
||||
import { fetchSplitRequirement } from '@/service/api';
|
||||
import { useForm, useFormRules } from '@/hooks/common/form';
|
||||
import { useDict } from '@/hooks/business/dict';
|
||||
@@ -46,6 +47,31 @@ const priorityOptions = computed(() => {
|
||||
}));
|
||||
});
|
||||
|
||||
const reviewRequiredOptions = [
|
||||
{ label: '不需要', value: 0 },
|
||||
{ label: '需要', value: 1 }
|
||||
];
|
||||
|
||||
function buildExpectedTimeShortcut(text: string, mutator: (date: Date) => void) {
|
||||
return {
|
||||
text,
|
||||
value: () => {
|
||||
const date = new Date();
|
||||
mutator(date);
|
||||
return date;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
const expectedTimeShortcuts = [
|
||||
buildExpectedTimeShortcut('一星期', date => date.setDate(date.getDate() + 7)),
|
||||
buildExpectedTimeShortcut('两星期', date => date.setDate(date.getDate() + 14)),
|
||||
buildExpectedTimeShortcut('一个月', date => date.setMonth(date.getMonth() + 1)),
|
||||
buildExpectedTimeShortcut('三个月', date => date.setMonth(date.getMonth() + 3)),
|
||||
buildExpectedTimeShortcut('半年', date => date.setMonth(date.getMonth() + 6)),
|
||||
buildExpectedTimeShortcut('一年', date => date.setFullYear(date.getFullYear() + 1))
|
||||
];
|
||||
|
||||
interface Model {
|
||||
title: string;
|
||||
description: string | null;
|
||||
@@ -53,8 +79,8 @@ interface Model {
|
||||
reviewRequired: number;
|
||||
category: string;
|
||||
priority: number | null;
|
||||
expectedTime: string | null;
|
||||
currentHandlerUserId: string;
|
||||
workHours: number | null;
|
||||
sort: number;
|
||||
}
|
||||
|
||||
@@ -66,16 +92,10 @@ const memberUserOptions = computed(() => {
|
||||
return props.memberOptions.filter(m => m.status === 0);
|
||||
});
|
||||
|
||||
const reviewRequiredOptions = [
|
||||
{ label: '不需要', value: 0 },
|
||||
{ label: '需要', value: 1 }
|
||||
];
|
||||
|
||||
const rules = {
|
||||
title: [createRequiredRule('请输入子需求名称')],
|
||||
priority: [createRequiredRule('请选择优先级')],
|
||||
currentHandlerUserId: [createRequiredRule('请选择负责人')],
|
||||
workHours: [createRequiredRule('请输入所需工时')]
|
||||
currentHandlerUserId: [createRequiredRule('请选择负责人')]
|
||||
} satisfies Record<string, App.Global.FormRule[]>;
|
||||
|
||||
const leftColRef = ref<HTMLElement>();
|
||||
@@ -116,8 +136,8 @@ function createDefaultModel(): Model {
|
||||
reviewRequired: 0,
|
||||
category: '',
|
||||
priority: 1,
|
||||
expectedTime: null,
|
||||
currentHandlerUserId: '',
|
||||
workHours: null,
|
||||
sort: 0
|
||||
};
|
||||
}
|
||||
@@ -153,8 +173,8 @@ async function handleSubmit() {
|
||||
reviewRequired: model.value.reviewRequired as Api.Product.RequirementReviewRequired,
|
||||
category: model.value.category,
|
||||
priority: Number(model.value.priority) as Api.Product.RequirementPriority,
|
||||
expectedTime: model.value.expectedTime,
|
||||
currentHandlerUserId: model.value.currentHandlerUserId,
|
||||
workHours: model.value.workHours || 0,
|
||||
sort: model.value.sort
|
||||
};
|
||||
|
||||
@@ -192,6 +212,10 @@ watch(
|
||||
model.value.currentHandlerUserId = props.parentRequirement.currentHandlerUserId;
|
||||
}
|
||||
|
||||
if (props.parentRequirement?.expectedTime) {
|
||||
model.value.expectedTime = props.parentRequirement.expectedTime;
|
||||
}
|
||||
|
||||
await nextTick();
|
||||
attachmentUploaderRef.value?.initSession();
|
||||
richTextEditorRef.value?.initSession();
|
||||
@@ -227,14 +251,17 @@ watch(
|
||||
</ElFormItem>
|
||||
|
||||
<ElFormItem label="是否需要评审">
|
||||
<ElSelect v-model="model.reviewRequired" class="w-full" placeholder="请选择">
|
||||
<ElOption
|
||||
<ElRadioGroup v-model="model.reviewRequired">
|
||||
<ElRadio
|
||||
v-for="item in reviewRequiredOptions"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value"
|
||||
/>
|
||||
</ElSelect>
|
||||
border
|
||||
style="width: 165px"
|
||||
>
|
||||
{{ item.label }}
|
||||
</ElRadio>
|
||||
</ElRadioGroup>
|
||||
</ElFormItem>
|
||||
|
||||
<ElFormItem label="优先级" prop="priority">
|
||||
@@ -243,17 +270,6 @@ watch(
|
||||
</ElSelect>
|
||||
</ElFormItem>
|
||||
|
||||
<ElFormItem label="所需工时" prop="workHours">
|
||||
<ElInputNumber
|
||||
v-model="model.workHours"
|
||||
class="w-full"
|
||||
:min="0"
|
||||
:max="9999"
|
||||
:precision="1"
|
||||
placeholder="请输入所需工时"
|
||||
/>
|
||||
</ElFormItem>
|
||||
|
||||
<ElFormItem label="负责人" prop="currentHandlerUserId">
|
||||
<ElSelect v-model="model.currentHandlerUserId" class="w-full" filterable placeholder="请选择负责人">
|
||||
<ElOption
|
||||
@@ -267,9 +283,20 @@ watch(
|
||||
</ElSelect>
|
||||
</ElFormItem>
|
||||
|
||||
<ElFormItem label="排序值">
|
||||
<ElInputNumber v-model="model.sort" class="w-full" :min="0" :max="9999" placeholder="请输入排序值" />
|
||||
<ElFormItem label="预期完成时间">
|
||||
<ElDatePicker
|
||||
v-model="model.expectedTime"
|
||||
type="date"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="请选择预期完成时间"
|
||||
:shortcuts="expectedTimeShortcuts"
|
||||
class="requirement-operate-dialog__date-picker"
|
||||
/>
|
||||
</ElFormItem>
|
||||
|
||||
<!-- <ElFormItem label="排序值">-->
|
||||
<!-- <ElInputNumber v-model="model.sort" class="w-full" :min="0" :max="9999" placeholder="请输入排序值" />-->
|
||||
<!-- </ElFormItem>-->
|
||||
</BusinessFormSection>
|
||||
</div>
|
||||
|
||||
@@ -330,4 +357,8 @@ watch(
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
|
||||
:deep(.requirement-operate-dialog__date-picker.el-date-editor.el-input) {
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
|
||||
Reference in New Issue
Block a user