feat: 一级需求部门发起任务必须上传预览图
1. 前端 CreateTask.vue: - 预览图表单项添加 required 属性(当是一级需求部门用户时) - 添加预览图的动态验证规则,一级需求部门用户必须上传预览图 - 在提交时添加额外的预览图验证 - 预览图提示信息针对一级需求部门用户显示必填提示 2. 后端 TaskService.java: - createTask 方法中添加一级需求部门用户预览图必填验证 - createPipelineTask 方法中添加一级需求部门用户预览图必填验证
This commit is contained in:
parent
895de04138
commit
75a7a760a6
@ -116,6 +116,11 @@ public class TaskService {
|
||||
|
||||
// 如果是一级需求部门发起的任务,设置相关字段
|
||||
if (isPrimaryTask) {
|
||||
// 一级需求部门发起任务必须上传预览图
|
||||
if (task.getPreviewImage() == null || task.getPreviewImage().trim().isEmpty()) {
|
||||
throw new BusinessException(ResultCode.PARAM_ERROR, "一级需求部门发起任务必须上传预览图");
|
||||
}
|
||||
|
||||
task.setIsPrimaryTask(1);
|
||||
task.setPrimaryPublisherId(task.getPublisherId());
|
||||
task.setPrimaryPublisherDeptId(task.getPublisherDeptId());
|
||||
@ -294,6 +299,11 @@ public class TaskService {
|
||||
// 检查一级需求部门是否可以跳过任务明细
|
||||
boolean canSkipTaskDetail = false;
|
||||
if (isPrimaryTask) {
|
||||
// 一级需求部门发起任务必须上传预览图
|
||||
if (dto.getPreviewImage() == null || dto.getPreviewImage().trim().isEmpty()) {
|
||||
throw new BusinessException(ResultCode.PARAM_ERROR, "一级需求部门发起任务必须上传预览图");
|
||||
}
|
||||
|
||||
Boolean canFillDetail = systemConfigService.getBooleanValue("task.primary_dept_can_fill_detail", true);
|
||||
canSkipTaskDetail = !canFillDetail;
|
||||
log.info("一级需求部门流水线任务,canFillDetail={}, canSkipTaskDetail={}", canFillDetail, canSkipTaskDetail);
|
||||
|
||||
@ -430,7 +430,11 @@
|
||||
</a-form-item>
|
||||
|
||||
<!-- 预览图上传 -->
|
||||
<a-form-item label="预览图" name="previewImage">
|
||||
<a-form-item
|
||||
label="预览图"
|
||||
name="previewImage"
|
||||
:required="isPrimaryDeptUser"
|
||||
>
|
||||
<div
|
||||
class="preview-upload-area"
|
||||
@paste="handlePasteImage"
|
||||
@ -456,7 +460,11 @@
|
||||
<span class="tip-icon">
|
||||
<Icon name="image" size="sm" color="#31f08b" />
|
||||
</span>
|
||||
<span>建议上传正方形图片,系统将自动压缩处理,显示在任务卡片上。支持 Ctrl+V 粘贴图片</span>
|
||||
<span v-if="isPrimaryDeptUser" style="color: #ff4d4f;">
|
||||
<Icon name="warning" size="xs" style="margin-right: 4px;" />
|
||||
一级需求部门发起任务必须上传预览图
|
||||
</span>
|
||||
<span v-else>建议上传正方形图片,系统将自动压缩处理,显示在任务卡片上。支持 Ctrl+V 粘贴图片</span>
|
||||
</div>
|
||||
</div>
|
||||
</a-form-item>
|
||||
@ -815,7 +823,7 @@ const removeBarcode = (index: number) => {
|
||||
const handleCheckInventory = handleAddBarcode
|
||||
|
||||
// 表单验证规则
|
||||
const formRules = {
|
||||
const formRules = computed(() => ({
|
||||
title: [
|
||||
{ required: true, message: '请输入任务标题', trigger: 'blur' },
|
||||
{ min: 2, max: 100, message: '标题长度在2-100个字符', trigger: 'blur' }
|
||||
@ -846,8 +854,21 @@ const formRules = {
|
||||
],
|
||||
releaseType: [
|
||||
{ required: true, message: '请选择发布类型', trigger: 'change' }
|
||||
],
|
||||
previewImage: [
|
||||
{
|
||||
required: isPrimaryDeptUser.value,
|
||||
message: '一级需求部门发起任务必须上传预览图',
|
||||
trigger: 'change',
|
||||
validator: (_rule: any, value: string) => {
|
||||
if (isPrimaryDeptUser.value && !value) {
|
||||
return Promise.reject('一级需求部门发起任务必须上传预览图')
|
||||
}
|
||||
return Promise.resolve()
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
}))
|
||||
|
||||
// 使用全局配置store的数据
|
||||
const taskTypes = computed(() => configStore.demandTypes)
|
||||
@ -1536,6 +1557,12 @@ const handleSubmit = async () => {
|
||||
// 验证表单
|
||||
await formRef.value.validate()
|
||||
|
||||
// 一级需求部门用户必须上传预览图
|
||||
if (isPrimaryDeptUser.value && !formData.previewImage) {
|
||||
message.error('一级需求部门发起任务必须上传预览图')
|
||||
return
|
||||
}
|
||||
|
||||
// 验证任务类型(一级需求部门且关闭任务明细时跳过验证)
|
||||
const validTaskTypes = formData.taskTypes.filter(item => item.taskTypeId && item.quantity > 0)
|
||||
if (shouldShowTaskDetail.value) {
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user