Files
medical-mall/services/admin/decorationService.uts

92 lines
2.3 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { rpcOrNull, rpcOrValue } from '@/services/analytics/rpc.uts'
/**
* DIY 页面模型
*/
export type DiyPage = {
id: string
name: string
type: string
config: UTSJSONObject
is_home: boolean
is_active: boolean
created_at: string
updated_at: string
}
/**
* 获取 DIY 页面分页列表
*/
export async function fetchDiyPageList(
search: string | null = null,
type: string | null = null,
page: number = 1,
pageSize: number = 20
): Promise<{ total: number, items: Array<DiyPage> }> {
const res = await rpcOrNull('rpc_admin_get_diy_page_list', {
p_search: search,
p_type: type,
p_page: page,
p_page_size: pageSize
} as UTSJSONObject)
if (res == null) return { total: 0, items: [] as Array<DiyPage> }
return {
total: (res as any).total as number,
items: (res as any).items as Array<DiyPage>
}
}
/**
* 保存 DIY 页面配置
*/
export async function saveDiyPage(
id: string | null,
name: string,
type: string,
config: UTSJSONObject,
isActive: boolean = true
): Promise<string | null> {
const res = await rpcOrValue('rpc_admin_save_diy_page', {
p_id: id,
p_name: name,
p_type: type,
p_config: config,
p_is_active: isActive
} as any)
return res != null ? String(res) : null
}
/**
* 删除 DIY 页面
*/
export async function deleteDiyPage(id: string): Promise<boolean> {
const ok = await rpcOrValue('rpc_admin_delete_diy_page', { p_id: id } as any)
return ok === true
}
/**
* 设置为生效首页
*/
export async function setAsHomePage(id: string): Promise<boolean> {
const ok = await rpcOrValue('rpc_admin_set_home_page', { p_id: id } as any)
return ok === true
}
/**
* 获取特定类型的生效配置 (供预览或样式页使用)
* 逻辑:从列表接口过滤 type 且 is_home = true 的第一项
*/
export async function getActiveDiyConfig(type: string): Promise<DiyPage | null> {
// 由于目前没有单独的 get_active_config RPC复用 list 接口并按 type 筛选
const res = await fetchDiyPageList(null, type, 1, 1)
if (res.items.length > 0 && res.items[0].is_home) {
// 注意list 接口可能不返回完整的 config JSON 以节省流量
// 如果后续需要完整配置,建议补齐 rpc_admin_get_diy_page_detail
return res.items[0]
}
return null
}