feat(web): 店铺必填项拦截纯空格输入,API Key 放宽到契约上限

- 店铺名称/Client ID/API Key 的 required 规则加 whitespace: true,
  与服务端 trim 后非空校验对齐
- API Key 输入 maxLength 200 → 8192(packages/contracts 契约上限),
  避免误拦较长的真实平台密钥
- 浏览器实测:空提交与纯空格提交均展示四条必填错误且不发请求,
  正常填写创建成功
This commit is contained in:
2026-09-03 22:00:33 +08:00
parent 446baf5939
commit 46d40b184b
+6 -5
View File
@@ -507,7 +507,7 @@ const ShopsPage = () => {
name="name" name="name"
label="店铺名称" label="店铺名称"
required required
rules={[{ required: true, message: '请输入店铺名称' }]} rules={[{ required: true, whitespace: true, message: '请输入店铺名称' }]}
> >
<Input maxLength={120} placeholder="例如:Ozon 俄罗斯主店" /> <Input maxLength={120} placeholder="例如:Ozon 俄罗斯主店" />
</Form.Item> </Form.Item>
@@ -515,7 +515,7 @@ const ShopsPage = () => {
name="client_id" name="client_id"
label="Client ID" label="Client ID"
required required
rules={[{ required: true, message: '请输入平台 Client ID' }]} rules={[{ required: true, whitespace: true, message: '请输入平台 Client ID' }]}
> >
<Input maxLength={120} placeholder="平台后台的 Client ID" /> <Input maxLength={120} placeholder="平台后台的 Client ID" />
</Form.Item> </Form.Item>
@@ -523,11 +523,12 @@ const ShopsPage = () => {
name="api_key" name="api_key"
label="API Key" label="API Key"
required required
rules={[{ required: true, message: '请输入平台 API Key' }]} rules={[{ required: true, whitespace: true, message: '请输入平台 API Key' }]}
extra="仅用于服务端加密保存与凭据验证,不会出现在日志或响应中" extra="仅用于服务端加密保存与凭据验证,不会出现在日志或响应中"
> >
{/* 契约上限 8192(packages/contracts/src/stores.ts),不自行收紧 */}
<Input.Password <Input.Password
maxLength={200} maxLength={8192}
placeholder="平台后台的 API Key" placeholder="平台后台的 API Key"
autoComplete="new-password" autoComplete="new-password"
/> />
@@ -604,7 +605,7 @@ const ShopsPage = () => {
extra="留空保留现有密钥;填写后将替换并重新验证凭据" extra="留空保留现有密钥;填写后将替换并重新验证凭据"
> >
<Input.Password <Input.Password
maxLength={200} maxLength={8192}
placeholder="不修改请留空" placeholder="不修改请留空"
autoComplete="new-password" autoComplete="new-password"
/> />