Skip to content

getTemplateView ( 获取模板视图 )

获取模板视图

提示

  1. @smartos-lib/api 包中封装的 api 请求方法都是使用 @mixte/useuseRequestReactive 包装的, 方法返回值及使用方式可以查看 useRequestReactive 文档
  2. 使用 api 请求方法前, 需要先使用 @smartos-lib/coresetConfigProvider 方法设置发起请求的方法

解决了以下后端已知问题

  • showControls / appShowControls
    • 某些情况下, 视图中没有系统字段 ( 默认补全, 支持配置 )
    • 某些情况下, 视图中存储的字段或系统字段是小驼峰格式 ( 已转换为下划线格式 )
    • 某些情况下, 视图中无字段、视图字段和模板表单字段不一致 ( 已同步字段 )

示例


基础使用

ts
import { getTemplateView } from '@smartos-lib/apis';

// 初始时传入模板 id
const templateView = getTemplateView('1711651576144896000');
templateView.execute();

// 发起请求时传入模板 id
const templateView = getTemplateView(); // 如果初始时也传入了模板 id, 则会被忽略
templateView.execute('1711651576144896000');

额外字段: 表单配置

ts
import type { TemplateViewColumnAndConfig } from '@smartos-lib/types';
import { getTemplateView } from '@smartos-lib/apis';
import { useJsonParse } from '@smartos-lib/utils';

const templateView = getTemplateView('1711651576144896000');

templateView.execute().then(() => {
  const showControls = useJsonParse<TemplateViewColumnAndConfig[]>(templateView.data!.data[0].showControls, []);

  showControls.forEach((item) => {
    // 表单配置信息存在这里, 系统字段没有配置, 值为 `undefined`
    // 这样就不用再获取一次模板表单了
    console.log(item.info);
  });
});

类型

ts
/**
 * 获取模板视图配置项
 */
interface GetTemplateViewOptions {
  /**
   * 是否包含系统固定字段
   * @default true
   */
  includeSystemFixedFields?: boolean;
}

/**
 * @param templateId 模板 ID
 * @param options 配置项
 * @param requestOptions 发起请求配置项 ( https://mixte.moomfe.com/mixte/use/useRequest )
 */
function getTemplateView(
  templateId?: MaybeRefOrGetter<string>,
  options?: GetTemplateViewOptions,
  requestOptions?: UseRequestOptions<ResponseData<TemplateView[]>>
): ReturnType<
  typeof useRequestReactive<AxiosResponse<ResponseData<TemplateView[]>>>
>;