diff --git a/ry-vue3/src/views/manager/ProjectsNew.vue b/ry-vue3/src/views/manager/ProjectsNew.vue index 06b9add..ef413f3 100644 --- a/ry-vue3/src/views/manager/ProjectsNew.vue +++ b/ry-vue3/src/views/manager/ProjectsNew.vue @@ -75,24 +75,17 @@ - + - + - - - - - - - -
角色劳务设置
@@ -132,6 +125,15 @@
+ + + + + + + + 取消 @@ -161,27 +163,27 @@ const fileInputRef = ref(null) function defaultRoleRow() { return { role: '', customName: '', amount: 0 } } function defaultNotice(key, label) { return { key, label, url: '', name: '' } } -// 当前本地时间 "yyyy-MM-dd HH:mm:ss" (发布时间默认值/校验用, 与 el-date-picker 的本地时间口径一致; 不能用 toISOString 的 UTC) -function nowLocalDatetime() { +// 今天 "yyyy-MM-dd" (发布日期默认值/校验用, 取本地日期; 不能用 toISOString 的 UTC) +function todayLocalDate() { const d = new Date() const p = n => String(n).padStart(2, '0') - return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())} ${p(d.getHours())}:${p(d.getMinutes())}:${p(d.getSeconds())}` + return `${d.getFullYear()}-${p(d.getMonth() + 1)}-${p(d.getDate())}` } -// 发布时间: 禁用今天之后的日历日期 (未来日期不可选) +// 发布日期: 禁用今天之后的日历日期 (未来日期不可选) function disableFutureDate(date) { const today = new Date() today.setHours(0, 0, 0, 0) return date.getTime() > today.getTime() } -// 发布时间校验: 必填 + 不能晚于当前时间 -// value 是 "YYYY-MM-DD HH:mm:ss" 定长补零字符串, 字典序 = 时间序, 直接字符串比较 (无需 Date 解析/时区) +// 发布日期校验: 必填 + 不能晚于今天 +// value 是 "YYYY-MM-DD" 定长补零字符串, 字典序 = 日期序, 直接字符串比较 (无需 Date 解析/时区) function validatePublishTime(rule, value, callback) { if (!value) { - callback(new Error('请选择发布时间')) + callback(new Error('请选择发布日期')) return } - if (value > nowLocalDatetime()) { - callback(new Error('发布时间不能晚于当前时间')) + if (value > todayLocalDate()) { + callback(new Error('发布日期不能晚于今天')) return } callback() @@ -199,8 +201,8 @@ const form = reactive({ isBidProject: 'N', totalSessions: 0, totalAmount: 0, manageFee: 0, startTime: '', endTime: '', - // 发布时间: 默认打开页面时的本地时间, 用户可修改 (不可设未来时间) - publishTime: nowLocalDatetime(), + // 发布日期: 默认今天, 用户可修改 (不可设未来日期) + publishTime: todayLocalDate(), roleRows: [ { role: '主席', customName: '', amount: 0 }, { role: '主持', customName: '', amount: 0 }, @@ -319,8 +321,8 @@ async function loadProject() { form.manageFee = p.manageFee || 0 form.startTime = p.startTime || '' form.endTime = p.endTime || '' - // 发布时间: 已有值反显, 否则沿用页面打开时的默认时间 - form.publishTime = p.publishTime || nowLocalDatetime() + // 发布日期: 已有值反显 (后端 "yyyy-MM-dd HH:mm:ss", 取前 10 位日期), 否则默认今天 + form.publishTime = (p.publishTime || '').slice(0, 10) || todayLocalDate() form.leadUserId = p.leadUserId || null form.isBidProject = p.isBidProject || 'N' // 角色劳务反显: biz_project.role_labor JSON 数组 [{role, customName, amount}] @@ -435,10 +437,11 @@ async function submit(mode = 'save') { else if (n.key === 'notice') payload.publishUrl = n.url else if (n.key === 'schedule') payload.scheduleUrl = n.url } - // 发布时设置 is_published='Y' + publish_time (用表单里用户可编辑的发布时间) + // 发布时设置 is_published='Y' + publish_time (用表单里用户可编辑的发布日期) + // 表单是纯日期 "yyyy-MM-dd", 后端 publishTime 是 Date(@JsonFormat "yyyy-MM-dd HH:mm:ss"), 补 00:00:00 提交 if (mode === 'publish') { payload.isPublished = 'Y' - payload.publishTime = form.publishTime + payload.publishTime = form.publishTime ? `${form.publishTime} 00:00:00` : '' } // 多执行方分配已移至"项目分配"页面单独管理 try {