[主框架组件文档](/ecode/playground/doc/share/view/1022992915720224769)

[主框架SDK文档](/ecode/playground/doc/share/view/1183567561081184260)

[基础服务二开文档](/ecode/playground/doc/share/view/1023781106639618049)

[基础服务配置文档](/ecode/playground/doc/share/view/1183582498868387841)

# 主框架SDK文档

主框架utils SDK方法调用示例：

主框架下调用（window.inWeappLayout === true）：


window.weappLayout?.LayoutSDK.utils.setLayoutTitle({ title: '自定义标题' });

非主框架页面调用：

window.weappUtils.corsImport("@weapp/layout").then((weapplayout) => { weappLayout.LayoutSDK.utils.setLayoutTitle({ title: 'title' }) });


| 方法名 | 说明 | 调用方式以及入/出参  | 最低基线版本 | 备注
| - | - | - | - | - |
| setLayoutTitle | 设置标题 | (config: Object) => void | - | config参数说明：{title: '标题名称'} |
| toPortal | 跳转至门户菜单 | ()=>void | - |
| showImContent | 打开工作消息 | ()=>void | - |路由会跳转到根路径下
| setImContentVisible | 工作消息显隐控制 | (visible:boolean) => void | - | 不会改变当前路由
| getImShowOnNavigation | 获取工作消息是否显示在导航栏 | (data?: NavMenuItem)=> boolean | - |
| getImShowOnNavigationAsync | 工作消息加载完成后回调 | (callback:(showOnNav:boolean)=>void)=>void | - | showOnNav：工作消息是否在导航栏显示
| getImDefaultShow | 异步获取工作消息是否主导航且默认显示 | (callback:(defaultShow:boolean)=>void)=> void | - | 结果在回调函数中获取
| quickLogout | 退出登录 | ()=> | - | 
| getMailMenuKeyMap | 导航菜单邮箱类型枚举map | ()=>Object | - |
| quickMenuClick | 快捷菜单点击 | (data:NavMenuItem)=>void | - | 参数类型见上文
| getMoreAppShowType | 更多应用菜单展示方式 | (data: NavMenuItem)=> void | - | 
| getCustomRouteMenus | 获取自定义路由组件数据（cusapp自定义组件等场景 路由-组件数据映射关系）| ()=>Ojbject | - |
| getRootLayoutProps | rootlayout props 属性获取 | ()=>Object | - | 
| getPreviewUrlByFileId | 通过fileId获取完整的图片预览路径 | (fileId: string, noSecondPath?: boolean)=>string | - |
| updateAvatar | 更新主框架头像 | (url: string)=> void | - | 
| getImTabContentVisible | 工作消息页是否展开 | ()=> boolean
| changeTheme | 切换主题 | (type: standard \| special , payload: any, callback?: Function)=>void | - | type=standard时payload为主题对象，type=special时payload为主题id
| getPortalMenuShow | 异步获取门户菜单是否显示在主导航 | ().then((protalMenuShow)=>{}) |  - | 函数返回值为promise,在promise获取回到结果
| openInBrowser | 在浏览器中打开 | ()=> void | - |
| setImContainerTop | 设置工作消息内容偏移 | (top: number, left?: number)=> void | - | 当工作消息在主导航显示时生效
| updateCornerMarker | 更新导航栏角标值 | (refreshId: string, count?: number)=> void | - | 当不传count时，通过接口获取最新的角标值
| changeTenant | 切换租户 | (tenant: { employeeId: string, tenantKey: string })=> void | - | 目标租户的employeeId和tenantKey
| changeRole | 切换身份 | (role: { employeeId: string })=> void | - | 目标身份的employeeId
| changeRoleMobile | 移动端切换身份 | (role: {employeeId: string, tenantKey: string}, redirectPath?: string)=> void | - | redirectPath为切换身份后重定向地址
| fontOnChange | 修改字体设置 | (type: 'fontSize' \| 'fontColor', value: string, showSuccessTip = false)=> void | - | type=fontSize时，value=small \| medium \| big; type=fontColor时,value=light \| medium \| deep
| filterToolMenus | 过滤掉工具栏中不显示的菜单 | (data: Array\<any>)=> Array\<any>
| loadTenantList | 加载租户列表 | ()=> void 
| showQucikUpDown | 文件传输列表在更多菜单中时挂载文件传输列表组件 | ()=>void |- | 当文件上传组件在更多菜单中时，自动展开更多菜单，确保文件上传组件被挂载
| setNavMode | 设置混合菜单模式 | (navMode: "mix" \| "standard")=>void
| setLoginExpireType | 设置超时弹框类型 | (type: 'expireTip' \| 'relogin')=>void | - | expireTip：登录超时提示  relogin超时重登窗口




主框架非utils SDK方法调用示例：
window.weappLayout?.LayoutSDK.functionName();
```js
/*
*事件注册名单
*moduleMenuItemClick 二级菜单点击
*appMenuItemClick 导航菜单点击
*allMenuItemClick 更多应用点击
*setAsideHidden 获取是否隐藏左侧菜单（特色主题）
*/
export type EventType = 'moduleMenuItemClick' | 'appMenuItemClick' | 'allMenuItemClick' | 'setAsideHidden';
export interface LayoutMenuSDKParamsProps {//setDataByKey 更新属性
    key: string,//更新key值
    value: any,//更新value
    source: string,//来源
    [propname: string]: any,//其他任意属性
}
```


| 方法名 | 说明 | 调用方式以及入/出参  | 最低基线版本 | 备注
| - | - | - | - | - |
| setEvent | 存入自定义事件（左侧菜单/顶部菜单点击等） | (type: string \| string, ev: any)=>void | - | 
| doEvent | 执行自定义事件 | (type: string \| string, param?: any) => void | - | 
| initIm |  默认渲染消息 | (config: { type: 'btn' \| 'fullScreen', callback?: any, ignoreSysSetting?: boolean } = { type: 'btn' }) => void | - |
| setImSilent | 进入静默模式;场景：提供pc客户端调用进入静默模式 |  (enable: boolean) => void
| setImEnable | 控制im显隐 |  (enable: boolean) => void | - | 
| getImShowType | 获取im显示方式 | ()=> void | - | 
| isNeedShowEm | 是否需要显示im | ()=> void | - | 
| setDataByKey | 更新内部值<br>场景：外部触发内部属性统一更新方法，并会主动触发一次监听<br>@param updateKey  需要更新数据的菜单key值，值与注册hook的名称保持一致<br>@param value  更新的新值 | (params: LayoutMenuSDKParamsProps)=> void | - |
| regHook | 外部事件注册 |  (hookname: string, callback: any, hookId?: string) => void | - | 
| unRegHook | 外部事件卸载 | (hookname: string, callback: any, hookId?: string) => void | -
| getRulesData | 手动触发获取hookValue | (key: string) => void | - |
| isEsbModule | 是否是eb应用展示 | ()=> void | - |
| setAsideHidden | 设置左侧菜单是否隐藏 | (hidden: boolean) => void | - | 
| lockPage | pc锁定 | (callback?: Function) => void | - | 
| setLayoutTitle | 设置主框架title | ({title:''})=> void | - | 
| getMenusSetting | 获取菜单设置组件 | ()=> void | - | 
| updateRouteMenus | 自定义路由组件数据（cusapp自定义组件等场景 路由-组件数据映射关系）| (routeMenus: RootLayoutMenuData[]) => void | - |
| refreshNavMenuItemByMenuKey | 刷新导航工具菜单（角标数量显示）| (menuKey: string) => void | - |
| updateAppMenusConfig | 更新应用展示设置配置数据 | ()=> void | - | 
| updateAppDropMenuConfig |更新更多应用菜单数据 | ()=> void | - |
| regFreeTimeLoad | 注册闲时加载项 | (loadCall: Function) => void | - |
| doFreeTimeLoad | 触发主框闲时加载项 | () => void | - | 
| refreshAppMenu | 刷新应用菜单数据 | ()=> void | - | 
| getTenantListData | 获取租户列表 | ()=> Array<any> | - |
| getNavMenuData | 获取主导航菜单 | 







```js
 //ts类型
export class NavMenuItem {
  id?: string;
  createTime?: string;
  updateTime?: string;
  creator?: number;
  menuName: string = "";
  i18nMenuName: string = "";
  i18nCustomMenuName: string = "";
  customMenuName?: string;
  icon: string = "";
  menuEnable?: number = 0;
  url?: string;
  openWay?: OpenWay = OpenWay.NEW_PAGE;
  useLimit?: number;
  orderNo?: number;
  menuType: MenuType = MenuType.CUSTOM_MENU;
  menuAuth?: string;
  i18nId?: string = "-1";
  customI18nId: string = "-1";
  groupType?: MenuGroupType = MenuGroupType.NAVIGATION;
  windowSize?: WindowSizeType = WindowSizeType.DEFAULT;
  windowHeight?: string;
  windowWidth?: string;
  defaultOrderNo?: Number = -1; //第二排序字段 为后期追加系统默认菜单预留
  menuKey: string = ""; //作为导航菜单唯一标识
  cornerMarkSetting?: NavMenuBubbleData;
  clientType?: ClientType;
  menuNameShow?: DataStatus = DataStatus.DISABLE;
  allowUserChange?: DataStatus = DataStatus.ENABLE;
  showWay?: ShowWays = ShowWays.FLOAT_MENU;
  imCount: number = 0;

  //二开预留
  customClick?: Function
  doDefaultEvent?: boolean
  customRender?: Function
  customTriggerPopup?: ReactNode
}

//菜单打开方式
export enum OpenWay {
  NEW_PAGE = 0, //新建页
  WINDOW = 1, //弹出窗口
  CURRENT_PAGE = 2 //当前页
}

//菜单类型
export enum MenuType {
  DEFAULT_MENU = "DEFAULT_MENU", //默认菜单
  CUSTOM_MENU = "CUSTOM_MENU",  //菜单
  LINE = "LINE", //分割线
}

//菜单分组类型
export enum MenuGroupType {
  NAVIGATION = "NAVIGATION", //导航栏
  MORE = "MORE" //更多
}

//客户端类型
export enum ClientType {
  CLIENT = 'pcClient',
  WEBCLIENT = 'webClient'
}

//状态
export enum DataStatus {
  ENABLE = 1,
  DISABLE = 2
}

//显示方式
export enum ShowWays {
  FLOAT_MENU = "floatmenu", //更多应用浮动菜单
  TILING_PAGE = "tilingpage",   //更多应用平铺
  MAIN_MENU = "mainmenu", //工作消息主导航显示
  MAIN_MENU_SHOW = 'mainmenushow',  //导航且默认显示
  FLOAT_ICON = "floaticon", //工作消息浮动图标
}
```



























