Files
glt-taro/src/passport/agreement.tsx
赵忠林 e22cfe4646 feat(auth): 添加统一认证工具和优化登录流程
- 新增 auth 工具模块,包含 isLoggedIn、goToRegister、ensureLoggedIn 方法
- 将硬编码的服务器URL更新为 glt-server 域名
- 重构多个页面的登录检查逻辑,使用统一的认证工具
- 在用户注册/登录流程中集成邀请关系处理
- 更新注册页面配置和实现,支持跳转参数传递
- 优化分销商二维码页面的加载状态和错误处理
- 在水票使用页面添加无票时的购买引导
- 统一文件上传和API请求的服务器地址
- 添加加密库类型定义文件
2026-02-13 21:30:58 +08:00

50 lines
1.3 KiB
TypeScript

import { useEffect, useState } from 'react'
import Taro from '@tarojs/taro'
import { Loading } from '@nutui/nutui-react-taro'
import { RichText, View } from '@tarojs/components'
import { getByCode } from '@/api/cms/cmsArticle'
import { wxParse } from '@/utils/common'
const Agreement = () => {
const [loading, setLoading] = useState(true)
const [content, setContent] = useState<string>('')
const reload = async () => {
try {
Taro.hideTabBar()
} catch (_) {
// ignore (e.g. H5 / unsupported env)
}
try {
const article = await getByCode('xieyi')
setContent(article?.content ? wxParse(article.content) : '<p>暂无协议内容</p>')
} catch (e) {
// Keep UI usable even if CMS/API fails.
// eslint-disable-next-line no-console
console.error('load agreement failed', e)
setContent('<p>协议内容加载失败</p>')
Taro.showToast({ title: '协议加载失败', icon: 'none' })
} finally {
setLoading(false)
}
}
useEffect(() => {
reload()
}, [])
if (loading) {
return <Loading className={'px-2'}></Loading>
}
return (
<>
<View className={'content text-gray-700 text-sm p-4'}>
<RichText nodes={content} />
</View>
</>
)
}
export default Agreement