From 344d26589c1efdaad49092762753c79ac5394a0f Mon Sep 17 00:00:00 2001 From: Your Name Date: Mon, 5 Jan 2026 14:01:24 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BB=BB=E5=8A=A1=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E9=85=8D=E7=BD=AE=E6=8E=A7=E5=88=B6=20+=20?= =?UTF-8?q?=E6=A0=87=E9=A2=98=E8=BE=93=E5=85=A5=E6=A1=86=E5=8F=AA=E8=AF=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/SystemConfigService.java | 5 + frontend/src/views/CreateTask.vue | 61 ++++++- frontend/src/views/Settings.vue | 159 ++++++++++++++++++ 3 files changed, 222 insertions(+), 3 deletions(-) diff --git a/backend/src/main/java/com/designhub/service/SystemConfigService.java b/backend/src/main/java/com/designhub/service/SystemConfigService.java index d761bcd..b7bc601 100644 --- a/backend/src/main/java/com/designhub/service/SystemConfigService.java +++ b/backend/src/main/java/com/designhub/service/SystemConfigService.java @@ -230,6 +230,11 @@ public class SystemConfigService { createConfigIfNotExists("navbar.action.checkin", "true", "navbar", "显示签到按钮", "是否在导航栏显示每日签到按钮", "boolean", 1); createConfigIfNotExists("navbar.action.achievement", "true", "navbar", "显示成就按钮", "是否在导航栏显示成就中心按钮", "boolean", 1); createConfigIfNotExists("navbar.action.settings", "true", "navbar", "显示设置按钮", "是否在导航栏显示设置按钮", "boolean", 1); + + // 任务发布类型配置 + createConfigIfNotExists("task.release_type.default", "true", "task", "显示默认模式按钮", "是否显示「默认模式」发布类型按钮", "boolean", 1); + createConfigIfNotExists("task.release_type.recruitment", "true", "task", "显示招募任务按钮", "是否显示「招募任务」发布类型按钮", "boolean", 1); + createConfigIfNotExists("task.release_type.assigned", "true", "task", "显示指定任务按钮", "是否显示「指定任务」发布类型按钮", "boolean", 1); } /** diff --git a/frontend/src/views/CreateTask.vue b/frontend/src/views/CreateTask.vue index 8f57b68..1cdf962 100644 --- a/frontend/src/views/CreateTask.vue +++ b/frontend/src/views/CreateTask.vue @@ -25,12 +25,14 @@ :rules="formRules" layout="vertical" > - +
@@ -329,6 +331,7 @@
- + +
+ + +
+
+

任务发布类型配置

+

管理发起任务页面中可用的发布类型选项

+
+ + + + + 发布类型按钮 + + +
+
+
+ + 默认模式 +
+
系统自动分配给主管,由主管负责分配
+ +
+ +
+
+ + 招募任务 +
+
发布到任务大厅,设计师可自行抢单
+ +
+ +
+
+ + 指定任务 +
+
指定特定设计师接收任务
+ +
+
+ + + + + + + + 保存配置 + + + + 恢复默认 + + + +
+
+
+
@@ -2780,6 +2859,74 @@ const handleResetNavbarConfig = () => { }) } +// ==================== 任务发布类型配置 ==================== +const taskReleaseConfig = ref({ + default: true, + recruitment: true, + assigned: true +}) + +const savingTaskReleaseConfig = ref(false) + +// 加载任务发布类型配置 +const loadTaskReleaseConfig = async () => { + try { + const response = await getSystemConfigsByGroup('task') + const configs = response.data || [] + + const defaultConfig = configs.find((c: any) => c.configKey === 'task.release_type.default') + const recruitmentConfig = configs.find((c: any) => c.configKey === 'task.release_type.recruitment') + const assignedConfig = configs.find((c: any) => c.configKey === 'task.release_type.assigned') + + taskReleaseConfig.value = { + default: defaultConfig?.configValue !== 'false', + recruitment: recruitmentConfig?.configValue !== 'false', + assigned: assignedConfig?.configValue !== 'false' + } + } catch (error) { + console.error('加载任务发布类型配置失败:', error) + } +} + +// 保存任务发布类型配置 +const handleSaveTaskReleaseConfig = async () => { + // 检查至少保留一个选项 + if (!taskReleaseConfig.value.default && !taskReleaseConfig.value.recruitment && !taskReleaseConfig.value.assigned) { + message.warning('至少需要保留一个发布类型,已自动启用默认模式') + taskReleaseConfig.value.default = true + } + + savingTaskReleaseConfig.value = true + try { + await batchUpdateSystemConfigs({ + 'task.release_type.default': taskReleaseConfig.value.default.toString(), + 'task.release_type.recruitment': taskReleaseConfig.value.recruitment.toString(), + 'task.release_type.assigned': taskReleaseConfig.value.assigned.toString() + }) + message.success('任务发布类型配置保存成功') + } catch (error: any) { + message.error(error.message || '保存失败') + } finally { + savingTaskReleaseConfig.value = false + } +} + +// 恢复默认任务发布类型配置 +const handleResetTaskReleaseConfig = () => { + Modal.confirm({ + title: '确认恢复默认配置?', + content: '此操作将显示所有发布类型选项', + onOk: async () => { + taskReleaseConfig.value = { + default: true, + recruitment: true, + assigned: true + } + await handleSaveTaskReleaseConfig() + } + }) +} + // 加载网站设置 const loadSiteSettings = async () => { loadingSiteSettings.value = true @@ -2948,6 +3095,8 @@ onMounted(() => { loadSiteSettings() // 加载钉钉配置 loadDingTalkConfig() + // 加载任务发布类型配置 + loadTaskReleaseConfig() }) // S3配置相关方法 @@ -3820,6 +3969,8 @@ watch(activeTab, (value) => { display: flex; align-items: center; justify-content: space-between; + flex-wrap: wrap; + gap: 8px; padding: 16px 20px; background: $bg-tertiary; border: 1px solid $border-primary; @@ -3842,6 +3993,14 @@ watch(activeTab, (value) => { font-weight: 500; } } + + .config-item-desc { + width: 100%; + color: $text-secondary; + font-size: 12px; + margin-top: -4px; + padding-left: 36px; + } } .section-description {