feat(pages): 添加管理页面功能和配置
- 创建 .editorconfig 文件统一代码风格配置 - 配置 .eslintrc 使用 taro/react 规则集 - 完善 .gitignore 忽略编译产物和敏感文件 - 添加 admin/article/add 页面实现文章管理功能 - 添加 dealer/apply/add 页面实现经销商申请功能 - 添加 dealer/bank/add 页面实现银行卡管理功能 - 添加 dealer/customer/add 页面实现客户管理功能 - 添加 user/address/add 页面实现用户地址管理功能 - 添加 user/chat/message/add 页面实现消息功能 - 添加 user/gift/add 页面实现礼品管理功能 - 配置各页面导航栏标题和样式 - 实现表单验证和数据提交功能 - 集成图片上传和头像选择功能 - 添加日期选择和数据校验逻辑 - 实现编辑和新增模式切换 - 集成用户权限和角色管理功能
This commit is contained in:
115
src/app.ts
Normal file
115
src/app.ts
Normal file
@@ -0,0 +1,115 @@
|
||||
import {useEffect} from 'react'
|
||||
import Taro, {useDidShow, useDidHide} from '@tarojs/taro'
|
||||
|
||||
// 全局样式
|
||||
import './app.scss'
|
||||
import {loginByOpenId} from "@/api/layout";
|
||||
import {TenantId} from "@/config/app";
|
||||
import {saveStorageByLoginUser} from "@/utils/server";
|
||||
import {parseInviteParams, saveInviteParams, trackInviteSource, handleInviteRelation} from "@/utils/invite";
|
||||
import {configWebsiteField} from "@/api/cms/cmsWebsiteField";
|
||||
|
||||
function App(props: { children: any; }) {
|
||||
const reload = () => {
|
||||
Taro.login({
|
||||
success: (res) => {
|
||||
loginByOpenId({
|
||||
code: res.code,
|
||||
tenantId: TenantId
|
||||
}).then(async data => {
|
||||
if (data) {
|
||||
saveStorageByLoginUser(data.access_token, data.user)
|
||||
|
||||
// 处理邀请关系
|
||||
if (data.user?.userId) {
|
||||
try {
|
||||
const inviteSuccess = await handleInviteRelation(data.user.userId)
|
||||
if (inviteSuccess) {
|
||||
console.log('自动登录时邀请关系建立成功')
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('自动登录时处理邀请关系失败:', error)
|
||||
}
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
};
|
||||
// 可以使用所有的 React Hooks
|
||||
useEffect(() => {
|
||||
// Taro.getSetting:获取用户的当前设置。返回值中只会出现小程序已经向用户请求过的权限。
|
||||
Taro.getSetting({
|
||||
success: (res) => {
|
||||
if (res.authSetting['scope.userInfo']) {
|
||||
reload();
|
||||
}
|
||||
}
|
||||
});
|
||||
}, []);
|
||||
|
||||
// 对应 onShow
|
||||
useDidShow(() => {
|
||||
// 处理小程序启动参数中的邀请信息
|
||||
const options = Taro.getLaunchOptionsSync()
|
||||
handleLaunchOptions(options)
|
||||
handleTheme()
|
||||
})
|
||||
|
||||
// 处理启动参数
|
||||
const handleLaunchOptions = (options: any) => {
|
||||
try {
|
||||
console.log('=== 小程序启动参数处理开始 ===')
|
||||
console.log('完整启动参数:', JSON.stringify(options, null, 2))
|
||||
|
||||
// 解析邀请参数
|
||||
const inviteParams = parseInviteParams(options)
|
||||
if (inviteParams) {
|
||||
console.log('✅ 成功检测到邀请参数:', inviteParams)
|
||||
|
||||
// 保存邀请参数到本地存储
|
||||
saveInviteParams(inviteParams)
|
||||
|
||||
// 统计邀请来源
|
||||
trackInviteSource(inviteParams.source || 'unknown', parseInt(inviteParams.inviter || '0'))
|
||||
|
||||
// 显示邀请提示
|
||||
setTimeout(() => {
|
||||
Taro.showToast({
|
||||
title: `检测到邀请信息 ID:${inviteParams.inviter}`,
|
||||
icon: 'success',
|
||||
duration: 3000
|
||||
})
|
||||
}, 1000)
|
||||
|
||||
} else {
|
||||
console.log('❌ 未检测到邀请参数')
|
||||
}
|
||||
|
||||
console.log('=== 小程序启动参数处理结束 ===')
|
||||
} catch (error) {
|
||||
console.error('处理启动参数失败:', error)
|
||||
}
|
||||
}
|
||||
|
||||
const handleTheme = () => {
|
||||
configWebsiteField().then(data => {
|
||||
// 设置主题
|
||||
if(data.theme && !Taro.getStorageSync('user_theme')){
|
||||
Taro.setStorageSync('user_theme', data.theme)
|
||||
}
|
||||
// 自定义接口
|
||||
if(data.apiUrl && process.env.NODE_ENV !== 'development'){
|
||||
Taro.setStorageSync('ApiUrl', data.apiUrl)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
// 对应 onHide
|
||||
useDidHide(() => {
|
||||
})
|
||||
|
||||
return props.children
|
||||
}
|
||||
|
||||
export default App
|
||||
Reference in New Issue
Block a user