From 42aedcd09aa623a16120ee8c1db4e6f47e147d93 Mon Sep 17 00:00:00 2001 From: DaxPay Dev Date: Wed, 22 Jul 2026 21:03:50 +0800 Subject: [PATCH] =?UTF-8?q?fix(platform):=20=E7=AB=99=E7=82=B9=E9=85=8D?= =?UTF-8?q?=E7=BD=AE=E8=A1=A5=E9=BD=90=E9=80=89=E5=A1=AB=E5=AD=97=E6=AE=B5?= =?UTF-8?q?=E7=BA=A7=E8=A1=A8=E5=8D=95=E6=A0=A1=E9=AA=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 邮箱、备案链接与长度约束在保存前挂到 Form.Item,避免后端错误拼成 toast。 Co-authored-by: Cursor --- .../locales/langs/en-US/system/platform.json | 6 +++ .../locales/langs/id-ID/system/platform.json | 8 ++- .../locales/langs/ja-JP/system/platform.json | 8 ++- .../locales/langs/ko-KR/system/platform.json | 8 ++- .../locales/langs/ms-MY/system/platform.json | 8 ++- .../locales/langs/th-TH/system/platform.json | 8 ++- .../locales/langs/vi-VN/system/platform.json | 8 ++- .../locales/langs/zh-CN/system/platform.json | 6 +++ .../locales/langs/zh-HK/system/platform.json | 8 ++- .../locales/langs/zh-TW/system/platform.json | 8 ++- .../platform/website/WebsiteConfigForm.vue | 49 ++++++++++++++++++- 11 files changed, 116 insertions(+), 9 deletions(-) diff --git a/apps/daxpay-admin/src/locales/langs/en-US/system/platform.json b/apps/daxpay-admin/src/locales/langs/en-US/system/platform.json index 917b6e609..ad8182010 100644 --- a/apps/daxpay-admin/src/locales/langs/en-US/system/platform.json +++ b/apps/daxpay-admin/src/locales/langs/en-US/system/platform.json @@ -79,6 +79,12 @@ "inputIcpPlusLink": "Enter telecom value-added license link", "inputCopyright": "Enter copyright text", "confirmSaveContent": "Are you sure to save website configuration?", + "emailInvalid": "Invalid email format", + "linkMustHttp": "Link must start with http:// or https://", + "systemNameMax": "System name cannot exceed 50 characters", + "companyNameMax": "Company name cannot exceed 100 characters", + "companyWechatMax": "WeChat ID cannot exceed 50 characters", + "copyrightMax": "Copyright text cannot exceed 200 characters", "section": { "basic": "Basic Info", "logo": "Logo", diff --git a/apps/daxpay-admin/src/locales/langs/id-ID/system/platform.json b/apps/daxpay-admin/src/locales/langs/id-ID/system/platform.json index 5b62c548c..6a936401e 100644 --- a/apps/daxpay-admin/src/locales/langs/id-ID/system/platform.json +++ b/apps/daxpay-admin/src/locales/langs/id-ID/system/platform.json @@ -84,7 +84,13 @@ "logo": "logo", "filing": "Info Pengarsipan", "copyright": "Hak cipta" - } + }, + "emailInvalid": "Format email tidak valid", + "linkMustHttp": "Tautan harus diawali dengan http:// atau https://", + "systemNameMax": "Nama sistem tidak boleh lebih dari 50 karakter", + "companyNameMax": "Nama perusahaan tidak boleh lebih dari 100 karakter", + "companyWechatMax": "ID WeChat tidak boleh lebih dari 50 karakter", + "copyrightMax": "Teks hak cipta tidak boleh lebih dari 200 karakter" }, "oss": { "title": "Konfigurasi OSS", diff --git a/apps/daxpay-admin/src/locales/langs/ja-JP/system/platform.json b/apps/daxpay-admin/src/locales/langs/ja-JP/system/platform.json index 7b811312c..48fc583c4 100644 --- a/apps/daxpay-admin/src/locales/langs/ja-JP/system/platform.json +++ b/apps/daxpay-admin/src/locales/langs/ja-JP/system/platform.json @@ -84,7 +84,13 @@ "logo": "ロゴ", "filing": "ファイリング情報", "copyright": "著作権" - } + }, + "emailInvalid": "メール形式が正しくありません", + "linkMustHttp": "リンクは http:// または https:// で始まる必要があります", + "systemNameMax": "システム名は50文字以内にしてください", + "companyNameMax": "会社名は100文字以内にしてください", + "companyWechatMax": "WeChat ID は50文字以内にしてください", + "copyrightMax": "著作権情報は200文字以内にしてください" }, "oss": { "title": "OSS 構成", diff --git a/apps/daxpay-admin/src/locales/langs/ko-KR/system/platform.json b/apps/daxpay-admin/src/locales/langs/ko-KR/system/platform.json index eb60a9e63..9d3bee1c8 100644 --- a/apps/daxpay-admin/src/locales/langs/ko-KR/system/platform.json +++ b/apps/daxpay-admin/src/locales/langs/ko-KR/system/platform.json @@ -84,7 +84,13 @@ "logo": "심벌 마크", "filing": "제출 정보", "copyright": "저작권" - } + }, + "emailInvalid": "이메일 형식이 올바르지 않습니다", + "linkMustHttp": "링크는 http:// 또는 https://로 시작해야 합니다", + "systemNameMax": "시스템 이름은 50자를 초과할 수 없습니다", + "companyNameMax": "회사명은 100자를 초과할 수 없습니다", + "companyWechatMax": "위챗 ID는 50자를 초과할 수 없습니다", + "copyrightMax": "저작권 정보는 200자를 초과할 수 없습니다" }, "oss": { "title": "OSS 구성", diff --git a/apps/daxpay-admin/src/locales/langs/ms-MY/system/platform.json b/apps/daxpay-admin/src/locales/langs/ms-MY/system/platform.json index a75c2d985..4ab3bebde 100644 --- a/apps/daxpay-admin/src/locales/langs/ms-MY/system/platform.json +++ b/apps/daxpay-admin/src/locales/langs/ms-MY/system/platform.json @@ -84,7 +84,13 @@ "logo": "Logo", "filing": "Maklumat Pemfailan", "copyright": "Hak Cipta" - } + }, + "emailInvalid": "Format e-mel tidak sah", + "linkMustHttp": "Pautan mesti bermula dengan http:// atau https://", + "systemNameMax": "Nama sistem tidak boleh melebihi 50 aksara", + "companyNameMax": "Nama syarikat tidak boleh melebihi 100 aksara", + "companyWechatMax": "ID WeChat tidak boleh melebihi 50 aksara", + "copyrightMax": "Teks hak cipta tidak boleh melebihi 200 aksara" }, "oss": { "title": "Konfigurasi OSS", diff --git a/apps/daxpay-admin/src/locales/langs/th-TH/system/platform.json b/apps/daxpay-admin/src/locales/langs/th-TH/system/platform.json index 279179278..e39fb1e3c 100644 --- a/apps/daxpay-admin/src/locales/langs/th-TH/system/platform.json +++ b/apps/daxpay-admin/src/locales/langs/th-TH/system/platform.json @@ -84,7 +84,13 @@ "logo": "โลโก้", "filing": "ข้อมูลการยื่น", "copyright": "ลิขสิทธิ์" - } + }, + "emailInvalid": "รูปแบบอีเมลไม่ถูกต้อง", + "linkMustHttp": "ลิงก์ต้องขึ้นต้นด้วย http:// หรือ https://", + "systemNameMax": "ชื่อระบบต้องไม่เกิน 50 ตัวอักษร", + "companyNameMax": "ชื่อบริษัทต้องไม่เกิน 100 ตัวอักษร", + "companyWechatMax": "WeChat ID ต้องไม่เกิน 50 ตัวอักษร", + "copyrightMax": "ข้อความลิขสิทธิ์ต้องไม่เกิน 200 ตัวอักษร" }, "oss": { "title": "การกำหนดค่า OSS", diff --git a/apps/daxpay-admin/src/locales/langs/vi-VN/system/platform.json b/apps/daxpay-admin/src/locales/langs/vi-VN/system/platform.json index 5c35b8252..dd753034d 100644 --- a/apps/daxpay-admin/src/locales/langs/vi-VN/system/platform.json +++ b/apps/daxpay-admin/src/locales/langs/vi-VN/system/platform.json @@ -84,7 +84,13 @@ "logo": "biểu tượng", "filing": "Thông tin nộp hồ sơ", "copyright": "Bản quyền" - } + }, + "emailInvalid": "Định dạng email không hợp lệ", + "linkMustHttp": "Liên kết phải bắt đầu bằng http:// hoặc https://", + "systemNameMax": "Tên hệ thống không được vượt quá 50 ký tự", + "companyNameMax": "Tên công ty không được vượt quá 100 ký tự", + "companyWechatMax": "ID WeChat không được vượt quá 50 ký tự", + "copyrightMax": "Thông tin bản quyền không được vượt quá 200 ký tự" }, "oss": { "title": "Cấu hình OSS", diff --git a/apps/daxpay-admin/src/locales/langs/zh-CN/system/platform.json b/apps/daxpay-admin/src/locales/langs/zh-CN/system/platform.json index 99d31feb8..e26de2f0f 100644 --- a/apps/daxpay-admin/src/locales/langs/zh-CN/system/platform.json +++ b/apps/daxpay-admin/src/locales/langs/zh-CN/system/platform.json @@ -79,6 +79,12 @@ "inputIcpPlusLink": "请输入电信增值业务许可链接地址", "inputCopyright": "请输入版权信息", "confirmSaveContent": "确定要保存站点配置吗?", + "emailInvalid": "邮箱格式不正确", + "linkMustHttp": "链接必须以 http:// 或 https:// 开头", + "systemNameMax": "系统名称长度不能超过50个字符", + "companyNameMax": "公司全称长度不能超过100个字符", + "companyWechatMax": "微信号长度不能超过50个字符", + "copyrightMax": "版权信息长度不能超过200个字符", "section": { "basic": "基础信息", "logo": "Logo", diff --git a/apps/daxpay-admin/src/locales/langs/zh-HK/system/platform.json b/apps/daxpay-admin/src/locales/langs/zh-HK/system/platform.json index 9992c6d27..ea3caf563 100644 --- a/apps/daxpay-admin/src/locales/langs/zh-HK/system/platform.json +++ b/apps/daxpay-admin/src/locales/langs/zh-HK/system/platform.json @@ -84,7 +84,13 @@ "logo": "Logo", "filing": "備案信息", "copyright": "版權信息" - } + }, + "emailInvalid": "郵箱格式不正確", + "linkMustHttp": "連結必須以 http:// 或 https:// 開頭", + "systemNameMax": "系統名稱長度不能超過50個字元", + "companyNameMax": "公司全稱長度不能超過100個字元", + "companyWechatMax": "微訊號長度不能超過50個字元", + "copyrightMax": "版權信息長度不能超過200個字元" }, "oss": { "title": "OSS配置", diff --git a/apps/daxpay-admin/src/locales/langs/zh-TW/system/platform.json b/apps/daxpay-admin/src/locales/langs/zh-TW/system/platform.json index 3d0e42088..b7c817c3d 100644 --- a/apps/daxpay-admin/src/locales/langs/zh-TW/system/platform.json +++ b/apps/daxpay-admin/src/locales/langs/zh-TW/system/platform.json @@ -84,7 +84,13 @@ "logo": "Logo", "filing": "備案資訊", "copyright": "版權資訊" - } + }, + "emailInvalid": "郵箱格式不正確", + "linkMustHttp": "連結必須以 http:// 或 https:// 開頭", + "systemNameMax": "系統名稱長度不能超過50個字元", + "companyNameMax": "公司全稱長度不能超過100個字元", + "companyWechatMax": "微訊號長度不能超過50個字元", + "copyrightMax": "版權資訊長度不能超過200個字元" }, "oss": { "title": "OSS配置", diff --git a/apps/daxpay-admin/src/views/system/config/platform/website/WebsiteConfigForm.vue b/apps/daxpay-admin/src/views/system/config/platform/website/WebsiteConfigForm.vue index 2a28c256c..eb521e8ff 100644 --- a/apps/daxpay-admin/src/views/system/config/platform/website/WebsiteConfigForm.vue +++ b/apps/daxpay-admin/src/views/system/config/platform/website/WebsiteConfigForm.vue @@ -20,6 +20,48 @@ // 表单数据 const formState = ref({}); + // 备案链接: 空可过, 有值须以 http:// 或 https:// 开头 + const httpLinkRule = { + validator: (_: unknown, value: string) => { + if (!value) { + return Promise.resolve(); + } + if (/^https?:\/\/.+$/.test(value)) { + return Promise.resolve(); + } + // 链接必须以 http:// 或 https:// 开头 + return Promise.reject($t('system.platform.website.linkMustHttp')); + }, + trigger: 'blur', + }; + + // 选填校验: 空可过; 有值才校邮箱/链接/长度 (对齐后端 Bean Validation) + const formRules = { + // 系统名称最长 50 + systemName: [{ max: 50, message: $t('system.platform.website.systemNameMax'), trigger: 'blur' }], + // 公司全称最长 100 + companyName: [{ max: 100, message: $t('system.platform.website.companyNameMax'), trigger: 'blur' }], + // 公司邮箱: 空可过, 有值须合法邮箱 + companyEmail: [ + { + type: 'email', + // 空串转 undefined, 避免 antd type:email 把空值当非法 + transform: (value: string) => (value ? value : undefined), + // 邮箱格式不正确 + message: $t('system.platform.website.emailInvalid'), + trigger: 'blur', + }, + ], + // 微信号最长 50 + companyWechat: [{ max: 50, message: $t('system.platform.website.companyWechatMax'), trigger: 'blur' }], + icpLink: [httpLinkRule], + mpsLink: [httpLinkRule], + pcacLink: [httpLinkRule], + icpPlusLink: [httpLinkRule], + // 版权信息最长 200 + copyright: [{ max: 200, message: $t('system.platform.website.copyrightMax'), trigger: 'blur' }], + }; + onMounted(() => { loadConfig(); }); @@ -116,7 +158,7 @@
{{ $t('system.platform.website.description') }}
- +
{{ $t('system.platform.website.section.basic') }}
@@ -432,6 +474,11 @@ margin-bottom: 0; } + /* 校验失败时留出错误文案空间, 避免贴紧下一格 */ + .module-form :deep(.ant-form-item-with-help) { + margin-bottom: 12px; + } + .config-section { display: flex; flex-direction: column;