feat(developer): 完成小程序开发者中心和企业控制台改造

- 设计并实现了开发者中心与企业控制台两大模块
- 按用户角色区分开发者和企业客户,支持多项目类型及成员管理
- 新增项目管理、应用管理、API Key管理及成员邀请等多功能页面
- 实现应用版本发布、消息通知中心、权限审批与开发者申请流程
- 完成CI/CD流水线、运营监控、发票管理、SSO单点登录功能
- 搭建SDK下载中心、工单系统、FAQ系统、数据导入导出等模块
- 优化后端API,支持已登录和未注册用户不同加入应用流程
- 前端按钮统一采用微信手机号授权,完善用户授权体验
- 修复多个页面的JSX语法错误及依赖导入问题,替换部分组件库
- 增加详细的类型定义文件,提升项目类型安全
- 新增超过55个页面及60个API接口,扩展应用功能和服务体系
- 完成全面的样式设计,实现一致的视觉风格和交互体验
This commit is contained in:
2026-04-13 02:26:46 +08:00
parent 2ae30ac692
commit ffab0ec25c
199 changed files with 20017 additions and 508 deletions

View File

@@ -103,6 +103,14 @@ function Home() {
Taro.makePhoneCall({ phoneNumber: tel })
}
const goToDeveloperCenter = () => {
Taro.navigateTo({ url: '/developer/index' })
}
const goToEnterpriseConsole = () => {
Taro.navigateTo({ url: '/enterprise/index' })
}
const products = useMemo(
() => [
{
@@ -136,16 +144,18 @@ function Home() {
{
title: '开发者中心',
recommend: false,
desc: '应用开发与交付入口:应用中心、源码仓库、Git 账号绑定、权限申请与教程文档。',
tags: ['应用', '源码', 'Git', '教程'],
desc: '应用开发与交付入口:项目、应用、API Key、部署与教程文档。',
tags: ['项目', '应用', 'API Key', '部署'],
adminUrl: '/developer',
onClick: goToDeveloperCenter,
},
{
title: '模板/插件市场',
title: '企业控制台',
recommend: false,
desc: '支持模板与插件购买、授权与更新,形成生态与增值体系。',
tags: ['市场', '授权', '更新', '变现'],
adminUrl: '/market',
desc: '企业应用管理、成员权限、订单账单与运营监控。',
tags: ['应用', '成员', '账单', '监控'],
adminUrl: '/enterprise',
onClick: goToEnterpriseConsole,
},
],
[]
@@ -237,6 +247,39 @@ function Home() {
))}
</View>
{/* 角色入口卡片 */}
<View className="roleEntry">
<View className="roleEntry__title">
<Text className="roleEntry__titleText"></Text>
</View>
<View className="roleEntry__grid">
<View className="roleEntry__card roleEntry__card--developer" onClick={goToDeveloperCenter}>
<View className="roleEntry__icon">
<Text className="roleEntry__iconText">🛠</Text>
</View>
<View className="roleEntry__info">
<Text className="roleEntry__cardTitle"></Text>
<Text className="roleEntry__cardDesc"> · · API Key</Text>
</View>
<View className="roleEntry__arrow">
<Text className="roleEntry__arrowText"></Text>
</View>
</View>
<View className="roleEntry__card roleEntry__card--enterprise" onClick={goToEnterpriseConsole}>
<View className="roleEntry__icon">
<Text className="roleEntry__iconText">🏢</Text>
</View>
<View className="roleEntry__info">
<Text className="roleEntry__cardTitle"></Text>
<Text className="roleEntry__cardDesc"> · · </Text>
</View>
<View className="roleEntry__arrow">
<Text className="roleEntry__arrowText"></Text>
</View>
</View>
</View>
</View>
{/* 产品矩阵 */}
<View className="section" id="products">
<View className="section__head">
@@ -266,9 +309,15 @@ function Home() {
))}
</View>
<View className="productCard__actions">
<Button size="small" type="primary" onClick={() => openMaybeLink(p.adminUrl)}>
</Button>
{p.onClick ? (
<Button size="small" type="primary" onClick={p.onClick}>
</Button>
) : (
<Button size="small" type="primary" onClick={() => openMaybeLink(p.adminUrl)}>
</Button>
)}
</View>
</View>
))}