mirror of
https://gitee.com/bootx/dax-pay-ui
synced 2026-08-11 15:15:34 +08:00
feat(risk): 风控配置页新增拦截级别与海外IP拦截占位项
- RiskConfig.vue 新增「拦截策略」分区, 含 openId 拦截级别 RadioGroup(normal/enhanced) 与海外 IP 拦截 Switch(disabled + 敬请期待 tooltip) - summaryItems 增加拦截级别与海外 IP 概要标签 - security.api.ts PaySecurityConfig 增加 riskOpenIdLevel 与 blockOverseasIp 字段 - 同步 10 语种 pay-security.json(含 label/desc/comingSoon 等)
This commit is contained in:
@@ -213,4 +213,8 @@ export interface PaySecurityConfig {
|
||||
riskBlockBeforePay?: boolean;
|
||||
/** 支付成功后是否补录命中(用于事后分析) */
|
||||
riskCheckAfterPay?: boolean;
|
||||
/** openId 拦截级别(normal=正常拦截 / enhanced=增强拦截) */
|
||||
riskOpenIdLevel?: string;
|
||||
/** 海外 IP 拦截(占位字段, 默认关闭, 后续接入) */
|
||||
blockOverseasIp?: boolean;
|
||||
}
|
||||
|
||||
@@ -13,10 +13,14 @@
|
||||
"blockOn": "Hit: Block Order",
|
||||
"blockOff": "Hit: Log Only",
|
||||
"afterOn": "Post-Pay Log: On",
|
||||
"afterOff": "Post-Pay Log: Off"
|
||||
"afterOff": "Post-Pay Log: Off",
|
||||
"levelNormal": "Level: Normal",
|
||||
"levelEnhanced": "Level: Enhanced",
|
||||
"overseasOn": "Overseas IP: Block"
|
||||
},
|
||||
"section": {
|
||||
"switch": "Risk Control"
|
||||
"switch": "Risk Control",
|
||||
"strategy": "Interception Strategy"
|
||||
},
|
||||
"riskEnabled": {
|
||||
"label": "Risk Control Master Switch",
|
||||
@@ -29,6 +33,17 @@
|
||||
"riskCheckAfterPay": {
|
||||
"label": "Post-Pay Hit Logging",
|
||||
"desc": "When enabled, hits are recorded after successful payment for post-event analysis, without affecting funds."
|
||||
},
|
||||
"riskOpenIdLevel": {
|
||||
"label": "openId Interception Level",
|
||||
"desc": "Normal: only block JSAPI/Mini native methods. Enhanced: also force OAuth to acquire openId for H5/QR-code in recognizable environments.",
|
||||
"normal": "Normal",
|
||||
"enhanced": "Enhanced"
|
||||
},
|
||||
"blockOverseasIp": {
|
||||
"label": "Overseas IP Blocking",
|
||||
"desc": "Block payment requests from overseas IPs (outside mainland China), a common risk control strategy for the China region.",
|
||||
"comingSoon": "This feature will be available in a future release."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,10 +13,14 @@
|
||||
"blockOn": "Hit: Blokir Pesanan",
|
||||
"blockOff": "Hit: Catat Saja",
|
||||
"afterOn": "Catatan Pascabayar: Aktif",
|
||||
"afterOff": "Catatan Pascabayar: Nonaktif"
|
||||
"afterOff": "Catatan Pascabayar: Nonaktif",
|
||||
"levelNormal": "Level: Normal",
|
||||
"levelEnhanced": "Level: Ditingkatkan",
|
||||
"overseasOn": "IP Luar Negeri: Blokir"
|
||||
},
|
||||
"section": {
|
||||
"switch": "Saklar Kontrol Risiko"
|
||||
"switch": "Saklar Kontrol Risiko",
|
||||
"strategy": "Strategi Intersepsi"
|
||||
},
|
||||
"riskEnabled": {
|
||||
"label": "Saklar Utama Kontrol Risiko",
|
||||
@@ -29,6 +33,17 @@
|
||||
"riskCheckAfterPay": {
|
||||
"label": "Pencatatan Hit Pasca Pembayaran",
|
||||
"desc": "Saat aktif, hit dicatat setelah pembayaran berhasil untuk analisis pasca-peristiwa, tanpa memengaruhi dana."
|
||||
},
|
||||
"riskOpenIdLevel": {
|
||||
"label": "Level Intersepsi openId",
|
||||
"desc": "Normal: hanya blokir metode native JSAPI/Mini. Ditingkatkan: juga memaksa OAuth untuk mendapatkan openId pada H5/QR dalam lingkungan yang dikenali.",
|
||||
"normal": "Normal",
|
||||
"enhanced": "Ditingkatkan"
|
||||
},
|
||||
"blockOverseasIp": {
|
||||
"label": "Pemblokiran IP Luar Negeri",
|
||||
"desc": "Blokir permintaan pembayaran dari IP luar negeri (di luar Tiongkok daratan), strategi pengendalian risiko umum di wilayah Tiongkok.",
|
||||
"comingSoon": "Fitur ini akan tersedia di rilis mendatang."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,10 +13,14 @@
|
||||
"blockOn": "ヒット:注文拒否",
|
||||
"blockOff": "ヒット:記録のみ",
|
||||
"afterOn": "事後記録:オン",
|
||||
"afterOff": "事後記録:オフ"
|
||||
"afterOff": "事後記録:オフ",
|
||||
"levelNormal": "レベル:通常",
|
||||
"levelEnhanced": "レベル:強化",
|
||||
"overseasOn": "海外 IP:ブロック"
|
||||
},
|
||||
"section": {
|
||||
"switch": "リスク管理スイッチ"
|
||||
"switch": "リスク管理スイッチ",
|
||||
"strategy": "ブロック戦略"
|
||||
},
|
||||
"riskEnabled": {
|
||||
"label": "リスク管理メインスイッチ",
|
||||
@@ -29,6 +33,17 @@
|
||||
"riskCheckAfterPay": {
|
||||
"label": "決済後ヒット記録",
|
||||
"desc": "オンの場合、決済成功後にヒットを記録し、事後分析に使用します。資金状態には影響しません。"
|
||||
},
|
||||
"riskOpenIdLevel": {
|
||||
"label": "openId ブロック レベル",
|
||||
"desc": "通常ブロック:JSAPI/ミニなどネイティブ方式のみブロック。強化ブロック:H5/QR 決済など識別可能環境でも OAuth を強制し openId を取得してブロック。",
|
||||
"normal": "通常ブロック",
|
||||
"enhanced": "強化ブロック"
|
||||
},
|
||||
"blockOverseasIp": {
|
||||
"label": "海外 IP ブロック",
|
||||
"desc": "中国本土以外の海外 IP からの決済リクエストをブロック。中国地域で一般的なリスク管理戦略。",
|
||||
"comingSoon": "この機能は今後のバージョンで提供されます。"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,10 +13,14 @@
|
||||
"blockOn": "히트: 주문 차단",
|
||||
"blockOff": "히트: 기록만",
|
||||
"afterOn": "사후 기록: 켜짐",
|
||||
"afterOff": "사후 기록: 꺼짐"
|
||||
"afterOff": "사후 기록: 꺼짐",
|
||||
"levelNormal": "레벨: 일반",
|
||||
"levelEnhanced": "레벨: 강화",
|
||||
"overseasOn": "해외 IP: 차단"
|
||||
},
|
||||
"section": {
|
||||
"switch": "리스크 관리 스위치"
|
||||
"switch": "리스크 관리 스위치",
|
||||
"strategy": "차단 전략"
|
||||
},
|
||||
"riskEnabled": {
|
||||
"label": "리스크 관리 마스터 스위치",
|
||||
@@ -29,6 +33,17 @@
|
||||
"riskCheckAfterPay": {
|
||||
"label": "결제 후 히트 기록",
|
||||
"desc": "켜면 결제 성공 후 히트를 기록하여 사후 분석에 사용합니다. 자금 상태에 영향을 주지 않습니다."
|
||||
},
|
||||
"riskOpenIdLevel": {
|
||||
"label": "openId 차단 레벨",
|
||||
"desc": "일반 차단: JSAPI/미니 등 네이티브 방식만 차단. 강화 차단: H5/QR 결제 등 인식 가능 환경에서 OAuth 를 강제하여 openId 를 획득 후 차단.",
|
||||
"normal": "일반 차단",
|
||||
"enhanced": "강화 차단"
|
||||
},
|
||||
"blockOverseasIp": {
|
||||
"label": "해외 IP 차단",
|
||||
"desc": "중국 본토 외 해외 IP 에서의 결제 요청을 차단. 중국 지역에서 일반적인 리스크 관리 전략.",
|
||||
"comingSoon": "이 기능은 향후 버전에서 제공됩니다."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,10 +13,14 @@
|
||||
"blockOn": "Hit: Sekat Pesanan",
|
||||
"blockOff": "Hit: Rekod Sahaja",
|
||||
"afterOn": "Rekod Pasca-Bayar: Aktif",
|
||||
"afterOff": "Rekod Pasca-Bayar: Mati"
|
||||
"afterOff": "Rekod Pasca-Bayar: Mati",
|
||||
"levelNormal": "Tahap: Biasa",
|
||||
"levelEnhanced": "Tahap: Diperkuat",
|
||||
"overseasOn": "IP Luar Negara: Sekat"
|
||||
},
|
||||
"section": {
|
||||
"switch": "Suis Kawalan Risiko"
|
||||
"switch": "Suis Kawalan Risiko",
|
||||
"strategy": "Strategi Sekatan"
|
||||
},
|
||||
"riskEnabled": {
|
||||
"label": "Suis Utama Kawalan Risiko",
|
||||
@@ -29,6 +33,17 @@
|
||||
"riskCheckAfterPay": {
|
||||
"label": "Rekod Hit Selepas Pembayaran",
|
||||
"desc": "Apabila aktif, hit direkod selepas pembayaran berjaya untuk analisis pasca-peristiwa, tanpa menjejaskan dana."
|
||||
},
|
||||
"riskOpenIdLevel": {
|
||||
"label": "Tahap Sekatan openId",
|
||||
"desc": "Biasa: hanya sekat kaedah native JSAPI/Mini. Diperkuat: juga memaksa OAuth untuk mendapatkan openId pada H5/QR dalam persekitaran yang dikenali.",
|
||||
"normal": "Biasa",
|
||||
"enhanced": "Diperkuat"
|
||||
},
|
||||
"blockOverseasIp": {
|
||||
"label": "Sekatan IP Luar Negara",
|
||||
"desc": "Sekat permintaan pembayaran dari IP luar negara (luar tanah besar China), strategi kawalan risiko biasa di wilayah China.",
|
||||
"comingSoon": "Ciri ini akan tersedia dalam keluaran akan datang."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,10 +13,14 @@
|
||||
"blockOn": "ตรง: บล็อกคำสั่ง",
|
||||
"blockOff": "ตรง: บันทึกอย่างเดียว",
|
||||
"afterOn": "บันทึกหลังชำระ: เปิด",
|
||||
"afterOff": "บันทึกหลังชำระ: ปิด"
|
||||
"afterOff": "บันทึกหลังชำระ: ปิด",
|
||||
"levelNormal": "ระดับ: ปกติ",
|
||||
"levelEnhanced": "ระดับ: เข้มข้น",
|
||||
"overseasOn": "IP ต่างประเทศ: บล็อก"
|
||||
},
|
||||
"section": {
|
||||
"switch": "สวิตช์ควบคุมความเสี่ยง"
|
||||
"switch": "สวิตช์ควบคุมความเสี่ยง",
|
||||
"strategy": "กลยุทธ์การบล็อก"
|
||||
},
|
||||
"riskEnabled": {
|
||||
"label": "สวิตช์หลักควบคุมความเสี่ยง",
|
||||
@@ -29,6 +33,17 @@
|
||||
"riskCheckAfterPay": {
|
||||
"label": "บันทึกการตรงหลังชำระเงิน",
|
||||
"desc": "เมื่อเปิด การตรงจะถูกบันทึกหลังชำระเงินสำเร็จเพื่อวิเคราะห์ภายหลัง โดยไม่กระทบสถานะเงิน"
|
||||
},
|
||||
"riskOpenIdLevel": {
|
||||
"label": "ระดับการบล็อก openId",
|
||||
"desc": "ปกติ: บล็อกเฉพาะ JSAPI/Mini แบบเนทีฟ. เข้มข้น: บังคับ OAuth เพื่อรับ openId สำหรับ H5/QR ในสภาพแวดล้อมที่ระบุได้.",
|
||||
"normal": "ปกติ",
|
||||
"enhanced": "เข้มข้น"
|
||||
},
|
||||
"blockOverseasIp": {
|
||||
"label": "การบล็อก IP ต่างประเทศ",
|
||||
"desc": "บล็อกคำขอชำระเงินจาก IP ต่างประเทศ (นอกจีนแผ่นดินใหญ่) กลยุทธ์ควบคุมความเสี่ยงที่พบได้ทั่วไปในภูมิภาคจีน",
|
||||
"comingSoon": "คุณลักษณะนี้จะพร้อมใช้งานในรุ่นถัดไป."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,10 +13,14 @@
|
||||
"blockOn": "Trúng: Chặn đơn",
|
||||
"blockOff": "Trúng: Chỉ ghi nhận",
|
||||
"afterOn": "Ghi nhận sau: Bật",
|
||||
"afterOff": "Ghi nhận sau: Tắt"
|
||||
"afterOff": "Ghi nhận sau: Tắt",
|
||||
"levelNormal": "Cấp độ: Bình thường",
|
||||
"levelEnhanced": "Cấp độ: Tăng cường",
|
||||
"overseasOn": "IP nước ngoài: Chặn"
|
||||
},
|
||||
"section": {
|
||||
"switch": "Công tắc kiểm soát rủi ro"
|
||||
"switch": "Công tắc kiểm soát rủi ro",
|
||||
"strategy": "Chiến lược chặn"
|
||||
},
|
||||
"riskEnabled": {
|
||||
"label": "Công tắc chính kiểm soát rủi ro",
|
||||
@@ -29,6 +33,17 @@
|
||||
"riskCheckAfterPay": {
|
||||
"label": "Ghi nhận trúng sau thanh toán",
|
||||
"desc": "Khi bật, trúng được ghi nhận sau thanh toán thành công để phân tích sự cố, không ảnh hưởng trạng thái tiền."
|
||||
},
|
||||
"riskOpenIdLevel": {
|
||||
"label": "Cấp độ chặn openId",
|
||||
"desc": "Bình thường: chỉ chặn phương thức native JSAPI/Mini. Tăng cường: ép OAuth lấy openId cho H5/QR trong môi trường nhận diện được.",
|
||||
"normal": "Bình thường",
|
||||
"enhanced": "Tăng cường"
|
||||
},
|
||||
"blockOverseasIp": {
|
||||
"label": "Chặn IP nước ngoài",
|
||||
"desc": "Chặn yêu cầu thanh toán từ IP nước ngoài (ngoài Trung Quốc đại lục), chiến lược kiểm soát rủi ro phổ biến tại khu vực Trung Quốc.",
|
||||
"comingSoon": "Tính năng này sẽ có trong bản phát hành sau."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,10 +13,14 @@
|
||||
"blockOn": "命中:拦截下单",
|
||||
"blockOff": "命中:仅记录",
|
||||
"afterOn": "事后补录:开",
|
||||
"afterOff": "事后补录:关"
|
||||
"afterOff": "事后补录:关",
|
||||
"levelNormal": "拦截级别:正常",
|
||||
"levelEnhanced": "拦截级别:增强",
|
||||
"overseasOn": "海外 IP:拦截"
|
||||
},
|
||||
"section": {
|
||||
"switch": "风控开关"
|
||||
"switch": "风控开关",
|
||||
"strategy": "拦截策略"
|
||||
},
|
||||
"riskEnabled": {
|
||||
"label": "风控总开关",
|
||||
@@ -29,6 +33,17 @@
|
||||
"riskCheckAfterPay": {
|
||||
"label": "事后补录命中",
|
||||
"desc": "开启后,支付成功后会补充记录命中情况,用于事后分析,不影响资金态。"
|
||||
},
|
||||
"riskOpenIdLevel": {
|
||||
"label": "openId 拦截级别",
|
||||
"desc": "正常拦截:仅对 JSAPI/小程序等原生方式拦截;增强拦截:对 H5/主扫等可识别环境也强制 OAuth 取 openId 拦截。",
|
||||
"normal": "正常拦截",
|
||||
"enhanced": "增强拦截"
|
||||
},
|
||||
"blockOverseasIp": {
|
||||
"label": "海外 IP 拦截",
|
||||
"desc": "拦截境外 IP(中国大陆以外)发起的支付请求,中国区常用风控策略。",
|
||||
"comingSoon": "该功能将在后续版本接入。"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,10 +13,14 @@
|
||||
"blockOn": "命中:攔截下單",
|
||||
"blockOff": "命中:僅記錄",
|
||||
"afterOn": "事後補錄:開",
|
||||
"afterOff": "事後補錄:關"
|
||||
"afterOff": "事後補錄:關",
|
||||
"levelNormal": "攔截級別:正常",
|
||||
"levelEnhanced": "攔截級別:增強",
|
||||
"overseasOn": "海外 IP:攔截"
|
||||
},
|
||||
"section": {
|
||||
"switch": "風控開關"
|
||||
"switch": "風控開關",
|
||||
"strategy": "攔截策略"
|
||||
},
|
||||
"riskEnabled": {
|
||||
"label": "風控總開關",
|
||||
@@ -29,6 +33,17 @@
|
||||
"riskCheckAfterPay": {
|
||||
"label": "事後補錄命中",
|
||||
"desc": "開啟後,支付成功後會補充記錄命中情況,用於事後分析,不影響資金態。"
|
||||
},
|
||||
"riskOpenIdLevel": {
|
||||
"label": "openId 攔截級別",
|
||||
"desc": "正常攔截:僅對 JSAPI/小程式等原生方式攔截;增強攔截:對 H5/主掃等可識別環境也強制 OAuth 取 openId 攔截。",
|
||||
"normal": "正常攔截",
|
||||
"enhanced": "增強攔截"
|
||||
},
|
||||
"blockOverseasIp": {
|
||||
"label": "海外 IP 攔截",
|
||||
"desc": "攔截境外 IP(中國大陸以外)發起的支付請求,中國區常用風控策略。",
|
||||
"comingSoon": "該功能將在後續版本接入。"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,10 +13,14 @@
|
||||
"blockOn": "命中:攔截下單",
|
||||
"blockOff": "命中:僅記錄",
|
||||
"afterOn": "事後補錄:開",
|
||||
"afterOff": "事後補錄:關"
|
||||
"afterOff": "事後補錄:關",
|
||||
"levelNormal": "攔截級別:正常",
|
||||
"levelEnhanced": "攔截級別:增強",
|
||||
"overseasOn": "海外 IP:攔截"
|
||||
},
|
||||
"section": {
|
||||
"switch": "風控開關"
|
||||
"switch": "風控開關",
|
||||
"strategy": "攔截策略"
|
||||
},
|
||||
"riskEnabled": {
|
||||
"label": "風控總開關",
|
||||
@@ -29,6 +33,17 @@
|
||||
"riskCheckAfterPay": {
|
||||
"label": "事後補錄命中",
|
||||
"desc": "開啟後,支付成功後會補充記錄命中情況,用於事後分析,不影響資金態。"
|
||||
},
|
||||
"riskOpenIdLevel": {
|
||||
"label": "openId 攔截級別",
|
||||
"desc": "正常攔截:僅對 JSAPI/小程式等原生方式攔截;增強攔截:對 H5/主掃等可識別環境也強制 OAuth 取 openId 攔截。",
|
||||
"normal": "正常攔截",
|
||||
"enhanced": "增強攔截"
|
||||
},
|
||||
"blockOverseasIp": {
|
||||
"label": "海外 IP 攔截",
|
||||
"desc": "攔截境外 IP(中國大陸以外)發起的支付請求,中國區常用風控策略。",
|
||||
"comingSoon": "該功能將在後續版本接入。"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,13 +20,13 @@
|
||||
|
||||
const formState = ref<PaySecurityConfig>({} as PaySecurityConfig);
|
||||
|
||||
// 概要标签:总开关关闭仅展示关闭态;开启时同步展示阻断/事后补录
|
||||
// 概要标签:总开关关闭仅展示关闭态;开启时同步展示阻断/事后补录/拦截级别
|
||||
const summaryItems = computed(() => {
|
||||
if (!formState.value.riskEnabled) {
|
||||
// 风控:已关闭
|
||||
return [$t('system.security.pay-security.risk.summary.disabled')];
|
||||
}
|
||||
return [
|
||||
const items = [
|
||||
// 风控:已开启
|
||||
$t('system.security.pay-security.risk.summary.enabled'),
|
||||
// 命中:拦截下单 / 仅记录
|
||||
@@ -37,7 +37,16 @@
|
||||
formState.value.riskCheckAfterPay
|
||||
? $t('system.security.pay-security.risk.summary.afterOn')
|
||||
: $t('system.security.pay-security.risk.summary.afterOff'),
|
||||
// openId 拦截级别
|
||||
formState.value.riskOpenIdLevel === 'enhanced'
|
||||
? $t('system.security.pay-security.risk.summary.levelEnhanced')
|
||||
: $t('system.security.pay-security.risk.summary.levelNormal'),
|
||||
];
|
||||
// 海外 IP 拦截(占位, 默认关闭, 仅开启时展示)
|
||||
if (formState.value.blockOverseasIp) {
|
||||
items.push($t('system.security.pay-security.risk.summary.overseasOn'));
|
||||
}
|
||||
return items;
|
||||
});
|
||||
|
||||
/**
|
||||
@@ -180,6 +189,55 @@
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- 拦截策略 -->
|
||||
<div class="config-section">
|
||||
<div class="config-section__title">
|
||||
{{ $t('system.security.pay-security.risk.section.strategy') }}
|
||||
</div>
|
||||
|
||||
<!-- openId 拦截级别 -->
|
||||
<div class="config-item">
|
||||
<div class="config-item__main">
|
||||
<!-- openId 拦截级别标签 -->
|
||||
<div class="config-item__label">{{
|
||||
$t('system.security.pay-security.risk.riskOpenIdLevel.label')
|
||||
}}</div>
|
||||
<!-- openId 拦截级别描述 -->
|
||||
<div class="config-item__desc">{{ $t('system.security.pay-security.risk.riskOpenIdLevel.desc') }}</div>
|
||||
</div>
|
||||
<a-radio-group
|
||||
v-model:value="formState.riskOpenIdLevel"
|
||||
button-style="solid"
|
||||
:disabled="!isEditing || !formState.riskEnabled"
|
||||
>
|
||||
<!-- 正常拦截 -->
|
||||
<a-radio-button value="normal">
|
||||
{{ $t('system.security.pay-security.risk.riskOpenIdLevel.normal') }}
|
||||
</a-radio-button>
|
||||
<!-- 增强拦截 -->
|
||||
<a-radio-button value="enhanced">
|
||||
{{ $t('system.security.pay-security.risk.riskOpenIdLevel.enhanced') }}
|
||||
</a-radio-button>
|
||||
</a-radio-group>
|
||||
</div>
|
||||
|
||||
<!-- 海外 IP 拦截(占位, 后续接入) -->
|
||||
<div class="config-item">
|
||||
<div class="config-item__main">
|
||||
<!-- 海外 IP 拦截标签 -->
|
||||
<div class="config-item__label">{{
|
||||
$t('system.security.pay-security.risk.blockOverseasIp.label')
|
||||
}}</div>
|
||||
<!-- 海外 IP 拦截描述 -->
|
||||
<div class="config-item__desc">{{ $t('system.security.pay-security.risk.blockOverseasIp.desc') }}</div>
|
||||
</div>
|
||||
<!-- 海外 IP 拦截: 后续版本接入, 当前禁用 -->
|
||||
<a-tooltip :title="$t('system.security.pay-security.risk.blockOverseasIp.comingSoon')">
|
||||
<a-switch v-model:checked="formState.blockOverseasIp" disabled />
|
||||
</a-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</a-form>
|
||||
</div>
|
||||
</a-spin>
|
||||
|
||||
Reference in New Issue
Block a user