diff --git a/packages/core/server/src/middlewares/render-variables.ts b/packages/core/server/src/middlewares/render-variables.ts index 33121bc7c2..0d6411f612 100644 --- a/packages/core/server/src/middlewares/render-variables.ts +++ b/packages/core/server/src/middlewares/render-variables.ts @@ -8,7 +8,7 @@ */ import { createJSONTemplateParser } from '@nocobase/json-template-parser'; -import { getDateVars, isDate } from '@nocobase/utils'; +import { getDateVars, isDate, parseDate } from '@nocobase/utils'; import { get } from 'lodash'; function getUser(ctx) { @@ -53,12 +53,18 @@ const dateValueWrapper = (value: any, timezone?: string) => { } if (Array.isArray(value)) { - if (value.length === 2) { - value.push('[]', timezone); + const valueString = value.map((v) => { + if (isDate(v)) { + return v.toISOString(); + } + return v; + }); + if (valueString.length === 2) { + valueString.push('[]', timezone); } else if (value.length === 3) { - value.push(timezone); + valueString.push(timezone); } - return value; + return valueString; } if (typeof value === 'string') { @@ -75,11 +81,15 @@ const dateValueWrapper = (value: any, timezone?: string) => { const $date = ({ fields, data, context }) => { const timezone = context.timezone; + const now = new Date().toISOString(); const dateVars = getDateVars(); const getValue = ({ field, keys }) => { - const value = get(dateVars, field); - return value; + const val = get(dateVars, field); + const operator = keys[keys.length - 1]; + const value = typeof val === 'function' ? val?.({ field, operator, timezone, now }) : val; + const parsedValue = parseDate(value, { timezone }); + return parsedValue; }; const afterApplyHelpers = ({ field, value, keys }) => { const operator = keys[keys.length - 1]; diff --git a/packages/plugins/@nocobase/plugin-variable-filters/src/json-template-filters/date.ts b/packages/plugins/@nocobase/plugin-variable-filters/src/json-template-filters/date.ts index 615b0b4d83..699fd16219 100644 --- a/packages/plugins/@nocobase/plugin-variable-filters/src/json-template-filters/date.ts +++ b/packages/plugins/@nocobase/plugin-variable-filters/src/json-template-filters/date.ts @@ -64,11 +64,9 @@ export function dateSubtract(initialValue: any, number: number, unit: any) { }; if (Array.isArray(initialValue)) { const results = initialValue.map(handler); - console.log(results[0].toISOString()); return results; } else { const result = handler(initialValue); - console.log(result.toISOString()); return handler(initialValue); } }