diff --git a/apps/web-antd/src/api/iot/thingmodel/index.ts b/apps/web-antd/src/api/iot/thingmodel/index.ts index 2fb80be2e..88665ebc9 100644 --- a/apps/web-antd/src/api/iot/thingmodel/index.ts +++ b/apps/web-antd/src/api/iot/thingmodel/index.ts @@ -148,8 +148,8 @@ export const ThingModelFormRules: Record = { identifier: [ { required: true, message: '标识符不能为空', trigger: 'blur' }, { - pattern: /^\w{1,50}$/, - message: '支持大小写字母、数字和下划线,不超过 50 个字符', + pattern: /^[a-zA-Z][a-zA-Z0-9_]{0,31}$/, + message: '支持大小写字母、数字和下划线,必须以字母开头,不超过 32 个字符', trigger: 'blur', }, { diff --git a/apps/web-antd/src/components/shortcut-date-range-picker/shortcut-date-range-picker.vue b/apps/web-antd/src/components/shortcut-date-range-picker/shortcut-date-range-picker.vue index 5a3ce0526..3dc3f15eb 100644 --- a/apps/web-antd/src/components/shortcut-date-range-picker/shortcut-date-range-picker.vue +++ b/apps/web-antd/src/components/shortcut-date-range-picker/shortcut-date-range-picker.vue @@ -4,6 +4,7 @@ import type { Dayjs } from 'dayjs'; import { onMounted, ref } from 'vue'; import { DatePicker, Radio, RadioGroup } from 'ant-design-vue'; +import dayjs from 'dayjs'; import { getRangePickerDefaultProps } from '#/utils/rangePickerProps'; @@ -19,8 +20,20 @@ const times = ref<[Dayjs, Dayjs]>(); // 日期范围 const rangePickerProps = getRangePickerDefaultProps(); const timeRangeOptions = [ rangePickerProps.presets[3]!, // 昨天 - rangePickerProps.presets[1]!, // 最近 7 天 - rangePickerProps.presets[2]!, // 最近 30 天 + { + label: rangePickerProps.presets[1]!.label, + value: [ + dayjs().subtract(7, 'day').startOf('day'), + dayjs().subtract(1, 'day').endOf('day'), + ], + }, + { + label: rangePickerProps.presets[2]!.label, + value: [ + dayjs().subtract(30, 'day').startOf('day'), + dayjs().subtract(1, 'day').endOf('day'), + ], + }, ]; const timeRangeType = ref(timeRangeOptions[1]!.label); // 默认选中第一个选项 diff --git a/apps/web-antd/src/views/iot/device/device/data.ts b/apps/web-antd/src/views/iot/device/device/data.ts index 1908033ef..ea7f0fc9b 100644 --- a/apps/web-antd/src/views/iot/device/device/data.ts +++ b/apps/web-antd/src/views/iot/device/device/data.ts @@ -79,10 +79,18 @@ export function useAdvancedFormSchema(): VbenFormSchema[] { }, rules: z .string() - .min(4, '备注名称长度限制为 4~64 个字符') - .max(64, '备注名称长度限制为 4~64 个字符') - .regex( - /^[\u4E00-\u9FA5\u3040-\u30FF\w]+$/, + .refine( + (value) => { + const length = value.replaceAll( + /[\u4E00-\u9FA5\u3040-\u30FF]/g, + 'aa', + ).length; + return length >= 4 && length <= 64; + }, + '备注名称长度限制为 4~64 个字符,中文及日文算 2 个字符', + ) + .refine( + (value) => /^[\u4E00-\u9FA5\u3040-\u30FF\w]+$/.test(value), '备注名称只能包含中文、英文字母、日文、数字和下划线(_)', ) .optional() diff --git a/apps/web-antd/src/views/iot/device/device/index.vue b/apps/web-antd/src/views/iot/device/device/index.vue index 3d2db1277..37c92caf7 100644 --- a/apps/web-antd/src/views/iot/device/device/index.vue +++ b/apps/web-antd/src/views/iot/device/device/index.vue @@ -215,6 +215,9 @@ const [Grid, gridApi] = useVbenVxeGrid({ columns: useGridColumns(), height: 'auto', keepSource: true, + pagerConfig: { + pageSize: 12, + }, proxyConfig: { ajax: { query: async ({ @@ -471,7 +474,7 @@ onMounted(async () => { { label: '日志', type: 'link', - auth: ['iot:device:message-query'], + auth: ['iot:device:query'], onClick: openModel.bind(null, row.id!), }, { diff --git a/apps/web-antd/src/views/iot/device/device/modules/card-view.vue b/apps/web-antd/src/views/iot/device/device/modules/card-view.vue index 94b86f2e4..eab4b9602 100644 --- a/apps/web-antd/src/views/iot/device/device/modules/card-view.vue +++ b/apps/web-antd/src/views/iot/device/device/modules/card-view.vue @@ -229,7 +229,7 @@ onMounted(() => { 详情