diff --git a/apps/daxpay-admin/src/api/request.ts b/apps/daxpay-admin/src/api/request.ts index 334a03c7a..fb3cf5ae7 100644 --- a/apps/daxpay-admin/src/api/request.ts +++ b/apps/daxpay-admin/src/api/request.ts @@ -93,6 +93,10 @@ function createRequestClient(baseURL: string, options?: RequestClientOptions) { // 通用的错误处理,如果没有进入上面的错误处理逻辑,就会进入这里 client.addResponseInterceptor( errorMessageResponseInterceptor((msg: string, error) => { + // 静默错误(请求 config 中设置 silentError=true), 不弹全局 toast, 由业务自行处理 + if (error?.config?.silentError) { + return; + } const { message } = useMessage(); // HTTP 错误(401等)响应体在 response.data; 业务错误(200但code非0)在顶层 data const body = error?.response?.data ?? error?.data ?? {}; diff --git a/apps/daxpay-admin/src/api/system/protocol/user-protocol.api.ts b/apps/daxpay-admin/src/api/system/protocol/user-protocol.api.ts index 9dd3954ae..633e73c9e 100644 --- a/apps/daxpay-admin/src/api/system/protocol/user-protocol.api.ts +++ b/apps/daxpay-admin/src/api/system/protocol/user-protocol.api.ts @@ -46,9 +46,13 @@ export const UserProtocolApi = { clientTypeOptions(): Promise> { return defHttp.get({ url: '/user/protocol/client-type-options' }); }, - /** 查询默认协议内容(对外, 各端展示用) */ + /** 查询默认协议内容(对外, 各端展示用; 协议未配置时会抛异常, 静默错误由调用方自行处理空态) */ findDefault(type: string, clientType: string, language?: string): Promise> { - return defHttp.get({ url: '/user/protocol/find-default', params: { type, clientType, language } }); + return defHttp.get({ + url: '/user/protocol/find-default', + params: { type, clientType, language }, + silentError: true, + }); }, }; diff --git a/apps/daxpay-admin/src/router/routes/core.ts b/apps/daxpay-admin/src/router/routes/core.ts index 64bb7bf9c..7d9854020 100644 --- a/apps/daxpay-admin/src/router/routes/core.ts +++ b/apps/daxpay-admin/src/router/routes/core.ts @@ -51,6 +51,30 @@ const socialBindCallbackRoute: RouteRecordRaw = { }, }; +/** 协议展示页(独立全屏路由,不走 AuthPageLayout,免登录预览协议正文) */ +const agreementTermsRoute: RouteRecordRaw = { + name: 'AgreementTerms', + path: '/auth/agreement/terms', + component: () => import('#/views/_core/authentication/agreement-terms.vue'), + meta: { + // 用户协议 + title: 'authentication.termsTitle', + hideInMenu: true, + }, +}; + +/** 隐私政策展示页(独立全屏路由,不走 AuthPageLayout,免登录预览协议正文) */ +const agreementPrivacyRoute: RouteRecordRaw = { + name: 'AgreementPrivacy', + path: '/auth/agreement/privacy', + component: () => import('#/views/_core/authentication/agreement-privacy.vue'), + meta: { + // 隐私政策 + title: 'authentication.privacyTitle', + hideInMenu: true, + }, +}; + // 服务不可用提示页(后端不可用时的兜底,独立全屏,不走权限拦截) const serviceUnavailableRoute: RouteRecordRaw = { name: 'ServiceUnavailable', @@ -131,30 +155,13 @@ const coreRoutes: RouteRecordRaw[] = [ hideInMenu: true, }, }, - { - name: 'AgreementTerms', - path: 'agreement/terms', - component: () => import('#/views/_core/authentication/agreement-terms.vue'), - meta: { - // 用户协议 - title: 'authentication.termsTitle', - hideInMenu: true, - }, - }, - { - name: 'AgreementPrivacy', - path: 'agreement/privacy', - component: () => import('#/views/_core/authentication/agreement-privacy.vue'), - meta: { - // 隐私政策 - title: 'authentication.privacyTitle', - hideInMenu: true, - }, - }, ], }, // 第三方绑定回调(独立路由,弹窗模式) socialBindCallbackRoute, + // 协议展示页(独立全屏路由,不走 AuthPageLayout) + agreementTermsRoute, + agreementPrivacyRoute, // 服务不可用提示页(后端不可用兜底,独立全屏,不走权限拦截) serviceUnavailableRoute, ]; diff --git a/apps/daxpay-admin/src/views/_core/authentication/agreement-privacy.vue b/apps/daxpay-admin/src/views/_core/authentication/agreement-privacy.vue index d178586e3..bf7cc9964 100644 --- a/apps/daxpay-admin/src/views/_core/authentication/agreement-privacy.vue +++ b/apps/daxpay-admin/src/views/_core/authentication/agreement-privacy.vue @@ -1,15 +1,10 @@ diff --git a/apps/daxpay-admin/src/views/_core/authentication/agreement-terms.vue b/apps/daxpay-admin/src/views/_core/authentication/agreement-terms.vue index 8f2f6a8ea..e5fccb3c7 100644 --- a/apps/daxpay-admin/src/views/_core/authentication/agreement-terms.vue +++ b/apps/daxpay-admin/src/views/_core/authentication/agreement-terms.vue @@ -1,15 +1,10 @@ diff --git a/apps/daxpay-admin/src/views/_core/authentication/components/AgreementContentView.vue b/apps/daxpay-admin/src/views/_core/authentication/components/AgreementContentView.vue new file mode 100644 index 000000000..367ed8100 --- /dev/null +++ b/apps/daxpay-admin/src/views/_core/authentication/components/AgreementContentView.vue @@ -0,0 +1,105 @@ + + + diff --git a/apps/daxpay-admin/src/views/_core/authentication/components/index.ts b/apps/daxpay-admin/src/views/_core/authentication/components/index.ts index 2e263c098..39b5d8e50 100644 --- a/apps/daxpay-admin/src/views/_core/authentication/components/index.ts +++ b/apps/daxpay-admin/src/views/_core/authentication/components/index.ts @@ -1,3 +1,4 @@ +export { default as AgreementContentView } from './AgreementContentView.vue'; export { default as AuthFormActions } from './AuthFormActions.vue'; export { default as AuthPageCard } from './AuthPageCard.vue'; export { default as AuthPageFooterActions } from './AuthPageFooterActions.vue'; diff --git a/packages/locales/src/langs/en-US/authentication.json b/packages/locales/src/langs/en-US/authentication.json index 210c87a38..dbffb9d24 100644 --- a/packages/locales/src/langs/en-US/authentication.json +++ b/packages/locales/src/langs/en-US/authentication.json @@ -43,6 +43,8 @@ "termsTitle": "Terms of Service", "privacyTitle": "Privacy Policy", "agreementContentPlaceholder": "This agreement is being drafted and will be available in a future release.", + "agreementEmpty": "No agreement content has been configured. Please contact the administrator to configure it.", + "agreementEffectiveTime": "Effective Date", "layout": { "center": "Align Center", "alignLeft": "Align Left", diff --git a/packages/locales/src/langs/id-ID/authentication.json b/packages/locales/src/langs/id-ID/authentication.json index 803a96416..4bcc71d8c 100644 --- a/packages/locales/src/langs/id-ID/authentication.json +++ b/packages/locales/src/langs/id-ID/authentication.json @@ -43,6 +43,8 @@ "termsTitle": "Ketentuan Layanan", "privacyTitle": "Kebijakan Privasi", "agreementContentPlaceholder": "Perjanjian ini sedang dirancang dan akan tersedia pada rilis mendatang.", + "agreementEmpty": "Konten perjanjian belum dikonfigurasi. Silakan hubungi administrator untuk mengonfigurasinya.", + "agreementEffectiveTime": "Tanggal Berlaku", "layout": { "center": "Sejajarkan Pusat", "alignLeft": "Sejajarkan ke Kiri", diff --git a/packages/locales/src/langs/ja-JP/authentication.json b/packages/locales/src/langs/ja-JP/authentication.json index f9d8f2e62..e80843430 100644 --- a/packages/locales/src/langs/ja-JP/authentication.json +++ b/packages/locales/src/langs/ja-JP/authentication.json @@ -43,6 +43,8 @@ "termsTitle": "利用規約", "privacyTitle": "プライバシーポリシー", "agreementContentPlaceholder": "この契約は現在草案中であり、将来のリリースで利用可能になる予定です。", + "agreementEmpty": "利用規約の内容が設定されていません。管理者にご連絡のうえ設定をご依頼ください。", + "agreementEffectiveTime": "発効日", "layout": { "center": "中央揃え", "alignLeft": "左揃え", diff --git a/packages/locales/src/langs/ko-KR/authentication.json b/packages/locales/src/langs/ko-KR/authentication.json index 37b900a13..3f19b35c3 100644 --- a/packages/locales/src/langs/ko-KR/authentication.json +++ b/packages/locales/src/langs/ko-KR/authentication.json @@ -43,6 +43,8 @@ "termsTitle": "서비스 약관", "privacyTitle": "개인 정보 보호 정책", "agreementContentPlaceholder": "본 계약은 초안 작성 중이며 향후 릴리스에서 제공될 예정입니다.", + "agreementEmpty": "약관 내용이 구성되지 않았습니다. 관리자에게 문의하여 구성해 주세요.", + "agreementEffectiveTime": "시행일", "layout": { "center": "중심 정렬", "alignLeft": "왼쪽 정렬", diff --git a/packages/locales/src/langs/ms-MY/authentication.json b/packages/locales/src/langs/ms-MY/authentication.json index 8597f465a..740a134c0 100644 --- a/packages/locales/src/langs/ms-MY/authentication.json +++ b/packages/locales/src/langs/ms-MY/authentication.json @@ -43,6 +43,8 @@ "termsTitle": "Syarat Perkhidmatan", "privacyTitle": "Dasar Privasi", "agreementContentPlaceholder": "Perjanjian ini sedang dirangka dan akan tersedia dalam keluaran akan datang.", + "agreementEmpty": "Kandungan perjanjian belum dikonfigurasi. Sila hubungi pentadbir untuk mengkonfigurasikannya.", + "agreementEffectiveTime": "Tarikh Berkuat Kuasa", "layout": { "center": "Jajarkan Tengah", "alignLeft": "Jajar Kiri", diff --git a/packages/locales/src/langs/th-TH/authentication.json b/packages/locales/src/langs/th-TH/authentication.json index e5c6ae62c..43c95a3f1 100644 --- a/packages/locales/src/langs/th-TH/authentication.json +++ b/packages/locales/src/langs/th-TH/authentication.json @@ -43,6 +43,8 @@ "termsTitle": "ข้อกำหนดในการให้บริการ", "privacyTitle": "นโยบายความเป็นส่วนตัว", "agreementContentPlaceholder": "ข้อตกลงนี้อยู่ระหว่างการร่างและจะพร้อมใช้งานในรุ่นต่อๆ ไป", + "agreementEmpty": "ยังไม่ได้กำหนดเนื้อหาข้อตกลง โปรดติดต่อผู้ดูแลระบบเพื่อกำหนด", + "agreementEffectiveTime": "วันที่มีผลบังคับ", "layout": { "center": "จัดกึ่งกลาง", "alignLeft": "จัดชิดซ้าย", diff --git a/packages/locales/src/langs/vi-VN/authentication.json b/packages/locales/src/langs/vi-VN/authentication.json index 1af2579f8..a73ddb39b 100644 --- a/packages/locales/src/langs/vi-VN/authentication.json +++ b/packages/locales/src/langs/vi-VN/authentication.json @@ -43,6 +43,8 @@ "termsTitle": "Điều khoản dịch vụ", "privacyTitle": "Chính sách bảo mật", "agreementContentPlaceholder": "Thỏa thuận này đang được soạn thảo và sẽ có trong bản phát hành trong tương lai.", + "agreementEmpty": "Nội dung thỏa thuận chưa được cấu hình. Vui lòng liên hệ quản trị viên để cấu hình.", + "agreementEffectiveTime": "Ngày có hiệu lực", "layout": { "center": "Căn giữa", "alignLeft": "Căn trái", diff --git a/packages/locales/src/langs/zh-CN/authentication.json b/packages/locales/src/langs/zh-CN/authentication.json index ccf40dbd2..8a939dec2 100644 --- a/packages/locales/src/langs/zh-CN/authentication.json +++ b/packages/locales/src/langs/zh-CN/authentication.json @@ -43,6 +43,8 @@ "termsTitle": "用户协议", "privacyTitle": "隐私政策", "agreementContentPlaceholder": "协议内容正在完善中,正式版将在后续版本提供。", + "agreementEmpty": "暂未配置协议内容,请联系管理员配置后再查看。", + "agreementEffectiveTime": "生效时间", "layout": { "center": "居中", "alignLeft": "居左", diff --git a/packages/locales/src/langs/zh-HK/authentication.json b/packages/locales/src/langs/zh-HK/authentication.json index 775a9354a..056969109 100644 --- a/packages/locales/src/langs/zh-HK/authentication.json +++ b/packages/locales/src/langs/zh-HK/authentication.json @@ -43,6 +43,8 @@ "termsTitle": "用户協議", "privacyTitle": "隱私政策", "agreementContentPlaceholder": "協議內容正在完善中,正式版將在後續版本提供。", + "agreementEmpty": "暫未配置協議內容,請聯絡管理員配置後再查看。", + "agreementEffectiveTime": "生效時間", "layout": { "center": "居中", "alignLeft": "居左", diff --git a/packages/locales/src/langs/zh-TW/authentication.json b/packages/locales/src/langs/zh-TW/authentication.json index abfc58fed..012309413 100644 --- a/packages/locales/src/langs/zh-TW/authentication.json +++ b/packages/locales/src/langs/zh-TW/authentication.json @@ -43,6 +43,8 @@ "termsTitle": "使用者協議", "privacyTitle": "隱私政策", "agreementContentPlaceholder": "協議內容正在完善中,正式版將在後續版本提供。", + "agreementEmpty": "暫未配置協議內容,請聯繫管理員配置後再查看。", + "agreementEffectiveTime": "生效時間", "layout": { "center": "居中", "alignLeft": "居左",