mirror of
https://gitee.com/bootx/dax-pay-ui
synced 2026-08-11 23:25:33 +08:00
fix(platform): 站点配置补齐选填字段级表单校验
邮箱、备案链接与长度约束在保存前挂到 Form.Item,避免后端错误拼成 toast。 Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -84,7 +84,13 @@
|
||||
"logo": "ロゴ",
|
||||
"filing": "ファイリング情報",
|
||||
"copyright": "著作権"
|
||||
}
|
||||
},
|
||||
"emailInvalid": "メール形式が正しくありません",
|
||||
"linkMustHttp": "リンクは http:// または https:// で始まる必要があります",
|
||||
"systemNameMax": "システム名は50文字以内にしてください",
|
||||
"companyNameMax": "会社名は100文字以内にしてください",
|
||||
"companyWechatMax": "WeChat ID は50文字以内にしてください",
|
||||
"copyrightMax": "著作権情報は200文字以内にしてください"
|
||||
},
|
||||
"oss": {
|
||||
"title": "OSS 構成",
|
||||
|
||||
@@ -84,7 +84,13 @@
|
||||
"logo": "심벌 마크",
|
||||
"filing": "제출 정보",
|
||||
"copyright": "저작권"
|
||||
}
|
||||
},
|
||||
"emailInvalid": "이메일 형식이 올바르지 않습니다",
|
||||
"linkMustHttp": "링크는 http:// 또는 https://로 시작해야 합니다",
|
||||
"systemNameMax": "시스템 이름은 50자를 초과할 수 없습니다",
|
||||
"companyNameMax": "회사명은 100자를 초과할 수 없습니다",
|
||||
"companyWechatMax": "위챗 ID는 50자를 초과할 수 없습니다",
|
||||
"copyrightMax": "저작권 정보는 200자를 초과할 수 없습니다"
|
||||
},
|
||||
"oss": {
|
||||
"title": "OSS 구성",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -84,7 +84,13 @@
|
||||
"logo": "โลโก้",
|
||||
"filing": "ข้อมูลการยื่น",
|
||||
"copyright": "ลิขสิทธิ์"
|
||||
}
|
||||
},
|
||||
"emailInvalid": "รูปแบบอีเมลไม่ถูกต้อง",
|
||||
"linkMustHttp": "ลิงก์ต้องขึ้นต้นด้วย http:// หรือ https://",
|
||||
"systemNameMax": "ชื่อระบบต้องไม่เกิน 50 ตัวอักษร",
|
||||
"companyNameMax": "ชื่อบริษัทต้องไม่เกิน 100 ตัวอักษร",
|
||||
"companyWechatMax": "WeChat ID ต้องไม่เกิน 50 ตัวอักษร",
|
||||
"copyrightMax": "ข้อความลิขสิทธิ์ต้องไม่เกิน 200 ตัวอักษร"
|
||||
},
|
||||
"oss": {
|
||||
"title": "การกำหนดค่า OSS",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -79,6 +79,12 @@
|
||||
"inputIcpPlusLink": "请输入电信增值业务许可链接地址",
|
||||
"inputCopyright": "请输入版权信息",
|
||||
"confirmSaveContent": "确定要保存站点配置吗?",
|
||||
"emailInvalid": "邮箱格式不正确",
|
||||
"linkMustHttp": "链接必须以 http:// 或 https:// 开头",
|
||||
"systemNameMax": "系统名称长度不能超过50个字符",
|
||||
"companyNameMax": "公司全称长度不能超过100个字符",
|
||||
"companyWechatMax": "微信号长度不能超过50个字符",
|
||||
"copyrightMax": "版权信息长度不能超过200个字符",
|
||||
"section": {
|
||||
"basic": "基础信息",
|
||||
"logo": "Logo",
|
||||
|
||||
@@ -84,7 +84,13 @@
|
||||
"logo": "Logo",
|
||||
"filing": "備案信息",
|
||||
"copyright": "版權信息"
|
||||
}
|
||||
},
|
||||
"emailInvalid": "郵箱格式不正確",
|
||||
"linkMustHttp": "連結必須以 http:// 或 https:// 開頭",
|
||||
"systemNameMax": "系統名稱長度不能超過50個字元",
|
||||
"companyNameMax": "公司全稱長度不能超過100個字元",
|
||||
"companyWechatMax": "微訊號長度不能超過50個字元",
|
||||
"copyrightMax": "版權信息長度不能超過200個字元"
|
||||
},
|
||||
"oss": {
|
||||
"title": "OSS配置",
|
||||
|
||||
@@ -84,7 +84,13 @@
|
||||
"logo": "Logo",
|
||||
"filing": "備案資訊",
|
||||
"copyright": "版權資訊"
|
||||
}
|
||||
},
|
||||
"emailInvalid": "郵箱格式不正確",
|
||||
"linkMustHttp": "連結必須以 http:// 或 https:// 開頭",
|
||||
"systemNameMax": "系統名稱長度不能超過50個字元",
|
||||
"companyNameMax": "公司全稱長度不能超過100個字元",
|
||||
"companyWechatMax": "微訊號長度不能超過50個字元",
|
||||
"copyrightMax": "版權資訊長度不能超過200個字元"
|
||||
},
|
||||
"oss": {
|
||||
"title": "OSS配置",
|
||||
|
||||
@@ -20,6 +20,48 @@
|
||||
// 表单数据
|
||||
const formState = ref<WebsiteConfig>({});
|
||||
|
||||
// 备案链接: 空可过, 有值须以 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 @@
|
||||
<div class="module-overview__desc">{{ $t('system.platform.website.description') }}</div>
|
||||
</div>
|
||||
|
||||
<a-form ref="formRef" :model="formState" layout="vertical" class="module-form">
|
||||
<a-form ref="formRef" :model="formState" :rules="formRules" layout="vertical" class="module-form">
|
||||
<!-- 基础信息 -->
|
||||
<div class="config-section">
|
||||
<div class="config-section__title">{{ $t('system.platform.website.section.basic') }}</div>
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user