feat(official): 实现企业官网分包及内容展示

- 新增官方分包目录及页面(首页、资讯列表、详情、关于我们、留言、我的)
- 自定义实现底部导航组件 OfficialTabBar,解决微信 tabBar 不支持分包问题
- 统一接口调用走 shop-api 代理,无新增 CMS 域名,减少合法域名负担
- 新增 CMS 站点信息获取接口及留言咨询提交与查询接口
- 设计并完善官网富文本样式,品牌色统一为 #185FA5,并更新 tailwind 配置
- 首页新增企业官网入口卡片,方便用户访问官网内容
- 完成官网分包构建验证,解决 Taro 构建批量删除保护问题
- 规范 CMS 字段使用,适配字段名称及状态含义
- 后续计划对历史页面 NutUI 组件进行空壳化整改,及更新 UI 设计文档
This commit is contained in:
2026-08-11 08:48:16 +08:00
parent d611a76ebd
commit 2e80a49ca1
20 changed files with 926 additions and 16 deletions
+31
View File
@@ -0,0 +1,31 @@
import request from '@/utils/request'
import type { ApiResult, PageResult } from '@/api'
import type { CmsContactLead, CmsContactLeadParam } from './model'
/**
* 提交联系线索(留言咨询),免登录
*/
export async function submitCmsContactLead(data: Partial<CmsContactLead>) {
const res = await request.post<ApiResult<unknown>>(
'/cms/cms-contact-lead/submit',
data
)
if (res.code === 0) {
return res.message
}
return Promise.reject(new Error(res.message))
}
/**
* 分页查询我的联系线索
*/
export async function pageCmsContactLead(params: CmsContactLeadParam) {
const res = await request.get<ApiResult<PageResult<CmsContactLead>>>(
'/cms/cms-contact-lead/page',
params
)
if (res.code === 0) {
return res.data
}
return Promise.reject(new Error(res.message))
}
+36
View File
@@ -0,0 +1,36 @@
import type { PageParam } from '@/api'
/**
* 联系线索(留言咨询)
*/
export interface CmsContactLead {
// 线索ID
leadId?: number
// 称呼
name?: string
// 手机号
phone?: string
// 公司
company?: string
// 邮箱
email?: string
// 需求描述
need?: string
// 来源 web|miniapp|app
source?: string
// 状态 0待跟进 1已回复 2已完成 3已归档
status?: number
// 租户id
tenantId?: number
// 创建时间
createTime?: string
}
/**
* 联系线索搜索条件
*/
export interface CmsContactLeadParam extends PageParam {
name?: string
phone?: string
source?: string
}
+13
View File
@@ -118,6 +118,19 @@ export async function getCmsWebsite(id: number) {
return Promise.reject(new Error(res.message));
}
/**
* 获取站点信息(含 topNavs / bottomNavs),官网首页与关于页使用
*/
export async function getCmsWebsiteSiteInfo() {
const res = await request.get<ApiResult<CmsWebsite>>(
'/cms/cms-website/getSiteInfo'
);
if (res.code === 0 && res.data) {
return res.data;
}
return Promise.reject(new Error(res.message));
}
/**
* 清除缓存
*/