From ab697925cfc7bd27fbf4101e7aa2ac5fff799a89 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 25 May 2026 00:11:11 +0800 Subject: [PATCH] =?UTF-8?q?fix(iot):=20=E4=BF=AE=E5=A4=8D=20antd/ele=20?= =?UTF-8?q?=E5=AF=B9=E9=BD=90=E8=AF=84=E5=AE=A1=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 对齐场景联动、首页趋势、产品、设备、分组、物模型等行为 - 修复设备导入结果弹窗、分页、权限、校验规则等差异 - 收敛 antd 与 ele 的实现风格 --- apps/web-antd/src/api/iot/thingmodel/index.ts | 4 ++-- .../shortcut-date-range-picker.vue | 17 +++++++++++++++-- .../src/views/iot/device/device/data.ts | 16 ++++++++++++---- .../src/views/iot/device/device/index.vue | 5 ++++- .../iot/device/device/modules/card-view.vue | 2 +- .../iot/device/device/modules/import-form.vue | 4 ++-- .../web-antd/src/views/iot/device/group/data.ts | 4 ++-- .../iot/home/modules/message-trend-card.vue | 8 +++++--- .../src/views/iot/product/product/data.ts | 5 ++++- .../iot/product/product/detail/modules/info.vue | 3 ++- .../iot/product/product/modules/card-view.vue | 8 ++++---- .../scene/form/selectors/property-selector.vue | 4 ++++ .../src/views/iot/rule/scene/modules/form.vue | 4 +++- .../src/views/iot/thingmodel/modules/form.vue | 9 --------- apps/web-ele/src/api/iot/thingmodel/index.ts | 4 ++-- .../shortcut-date-range-picker.vue | 4 ++-- .../web-ele/src/views/iot/device/device/data.ts | 16 ++++++++++++---- .../src/views/iot/device/device/index.vue | 5 ++++- .../iot/device/device/modules/card-view.vue | 2 +- .../iot/device/device/modules/import-form.vue | 4 ++-- apps/web-ele/src/views/iot/device/group/data.ts | 4 ++-- .../iot/home/modules/message-trend-card.vue | 8 +++++--- .../src/views/iot/product/product/data.ts | 5 ++++- .../iot/product/product/detail/modules/info.vue | 3 ++- .../iot/product/product/modules/card-view.vue | 8 ++++---- .../scene/form/selectors/property-selector.vue | 5 ++++- .../src/views/iot/rule/scene/modules/form.vue | 4 +++- .../src/views/iot/thingmodel/modules/form.vue | 9 --------- 28 files changed, 107 insertions(+), 67 deletions(-) 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(() => { 详情