diff --git a/src/views/devices/sn/config/add.ts b/src/views/devices/sn/config/add.ts index cb6bbb3a..8f6922ec 100644 --- a/src/views/devices/sn/config/add.ts +++ b/src/views/devices/sn/config/add.ts @@ -2,6 +2,24 @@ import DeviceAPI from "@/api/device"; import type { DeviceForm } from "@/api/device/types"; import type { CrudFormConfig } from "@/components/Crud/types"; +/** 表单不再自动 trim,提交前去掉文本字段首尾空格 */ +function trimText(data: DeviceForm): DeviceForm { + const payload = { ...data }; + for (const key of [ + "serialno", + "snModel", + "snName", + "snMobile", + "snImei", + "deviceType", + "source", + ] as const) { + const value = payload[key]; + if (typeof value === "string") payload[key] = value.trim(); + } + return payload; +} + const addFormConfig: CrudFormConfig = { component: "dialog", dialog: { @@ -12,12 +30,12 @@ const addFormConfig: CrudFormConfig = { form: { labelWidth: 100, }, - submitForm: (data) => DeviceAPI.create(data), + submitForm: (data) => DeviceAPI.create(trimText(data)), fields: [ { label: "设备SN", prop: "serialno", - rules: [{ required: true, message: "设备SN不能为空", trigger: "blur" }], + rules: [{ required: true, whitespace: true, message: "设备SN不能为空", trigger: "blur" }], type: "input", attrs: { placeholder: "请输入设备序列号", diff --git a/src/views/devices/sn/config/content.ts b/src/views/devices/sn/config/content.ts index 144afa8c..a5605221 100644 --- a/src/views/devices/sn/config/content.ts +++ b/src/views/devices/sn/config/content.ts @@ -1,7 +1,7 @@ import DeviceAPI from "@/api/device"; import type { DeviceItem, DeviceQueryParams } from "@/api/device/types"; import type { CrudTableConfig } from "@/components/Crud/types"; -import { onlineStatus, syncOnlineStatus } from "./online"; +import { syncOnlineStatus, updateOnlineStatus } from "./online"; /** 列表接口不保证带在线状态,加载后批量补齐 */ async function fetchDevices(params: DeviceQueryParams) { @@ -9,12 +9,9 @@ async function fetchDevices(params: DeviceQueryParams) { syncOnlineStatus(page.list); const sns = page.list.map((item) => item.serialno).filter((sn): sn is string => !!sn); if (sns.length) { - await DeviceAPI.getOnlineStatusBatch(sns) - .then((onlineMap) => { - Object.values(onlineMap ?? {}).forEach((info) => { - if (info?.serialno) onlineStatus[info.serialno] = info.online ?? 0; - }); - }) + // 在线状态后补,不阻塞列表首屏 + void DeviceAPI.getOnlineStatusBatch(sns) + .then((onlineMap) => Object.values(onlineMap ?? {}).forEach(updateOnlineStatus)) .catch(() => undefined); } return page; diff --git a/src/views/devices/sn/config/edit.ts b/src/views/devices/sn/config/edit.ts index b899c6d1..dd1200eb 100644 --- a/src/views/devices/sn/config/edit.ts +++ b/src/views/devices/sn/config/edit.ts @@ -15,15 +15,14 @@ const editFormConfig: CrudFormConfig = { labelWidth: 100, }, // 编辑只回传可修改字段(仅设备昵称与状态) - submitForm: (data) => - DeviceAPI.update( - data.id as string, - { - id: data.id, - snName: data.snName, - status: data.status, - } as DeviceForm, - ), + submitForm: (data) => { + const payload = { + id: data.id, + snName: data.snName?.trim(), + status: data.status, + } as DeviceForm; + return DeviceAPI.update(payload.id as string, payload); + }, fields: [ { label: "设备SN", @@ -38,7 +37,7 @@ const editFormConfig: CrudFormConfig = { { label: "设备昵称", prop: "snName", - rules: [{ required: true, message: "设备昵称不能为空", trigger: "blur" }], + rules: [{ required: true, whitespace: true, message: "设备昵称不能为空", trigger: "blur" }], type: "input", attrs: { placeholder: "请输入设备昵称",