文档中心登录前进行品牌展示,为满足企业或组织的的个性化需求

如何为文档中心定制欢迎页?

该组件仅适用于私有化WPS365版本

1. 方案概述

欢迎页是由客户自己设计和定义的独立页面,可以在文档中心登录前进行品牌展示。

总的来说,欢迎页的内容客户可以根据自己的需求自行设计,通常比较高频的使用方式有:

  1. 视觉品牌植入: 展示企业LOGO、标语等元素,强化员工和客户对公司品牌的日常感知。
  2. 文化仪式感营造: 根据节日/企业纪念日更新主题(如周年庆动态海报、春节祝福),增强员工情感联结。

如果没有定制欢迎页,客户在登录文档中心时,会直接进入文档中心登录页,输入账号和密码进行登录。

客户定制了文档中心欢迎页之后,遇到需要登录的场景,会先跳转进入企业欢迎页,在欢迎页进行相关操作(例如:点击【去使用】按钮)之后再进入登录页。

欢迎页
欢迎页页面示例,企业可自定义欢迎语等页面设计
实现效果客户在进行登录操作前,被拦截跳转到欢迎页:GOVDL5Q6AAQAG
支持端文档中心PC端、文档中心H5端
版本限制2024-0613(含)以上
操作系统限制支持X86、XC

2. 使用指南

👉独立页面插件

  • 欢迎页: /c/cid/index.html#/welcome

👉能力

sdk.login.pageInit

👉方法

onIntercept

登陆页面-页面初始化拦截

信息内容
支持版本2024-0613
是否支持多插件true
是否支持异步false
兼容性说明

其他说明:无

参数

参数名称必选类型描述
listener(params: {}) => boolean

示例

sdk.login.pageInit.onIntercept((data)=>{
  console.log(data, 'onIntercept')
  return true
})

👉代码示例

目录结构

ecis-frontend-plugin-custom-frame/
├── src/
│   ├── components/
│   │   ├── welcome/
│   │   │   ├── index.tsx            //欢迎页
│   │   │   ├── index.module.less
│   ├── libs/
│   │   ├── i18n/
│   │   │   ├── locales/
│   │   │   │   ├── zh-CN.json  // 包含中文语言的翻译键值对
│   │   │   │   ├── zh-HK.json  // 包含繁体语言的翻译键值对
│   │   │   │   ├── en-US.json  // 包含英文语言的翻译键值对
│   ├── web/
│   │   ├── bootstrap.tsx   // 页面开发根节点组件路径
│   ├── plugin/
│   │   ├── index.tsx   // 插件功能具体实现

路由划分

src/web/bootstrap.tsx

import React from 'react';
import ReactDOM from 'react-dom';
import { HashRouter as Router, Route, Switch } from 'react-router-dom';

import Welcome from '../componetns/welcome/index';
import '../libs/i18n';
import './index.css';

// eslint-disable-next-line react/no-deprecated
ReactDOM.render(
  <Router>
    <Switch>
      <Route path={'/welcome'} exact={true} component={Welcome} />
    </Switch>
  </Router>,
  document.querySelector('#app')
);

欢迎页定制

src/components/welcome/index.tsx

📌 注意

  1. /c/cid/index.html/#/welcome 地址为插件独立页面地址
  2. 在欢迎页中通过cb获取登录地址,进行等待或其他逻辑后跳转回登录页
import React from 'react';
import { Button } from 'antd';
import sdk from '@libs/sdk';

import styles from './index.module.less';

const Welcome = () => {
  /**
   * 可在此基于客户提供诉求,进行定制实现
   * ......
   * 诉求完成后,跳转回登录页
   */

  const setStoreItem = () => {
    // 此处为示例,可依需求自行实现
    localStorage.setItem('LOGIN_WELCOME_INFO', JSON.stringify({ isJump: true }));
  };

  const redirectDamian = () => {
    const webpath = sdk.utils.env.webpath;
    window.location.replace(webpath);
  };

  const login = () => {
    try {
      const cb = new URL(window.location.href).searchParams.get('cb');
      if (cb) {
        // 跳转前,记录已经跳转过
        setStoreItem();
        return window.location.replace(cb);
      }
    } catch (error) {
      console.error('welcome page jump to login page error', error);
    }
    setStoreItem();
    return redirectDamian();
  };

  return (
    <div className={styles.welcome}>
      <h1>欢迎使用xxx(自定义欢迎语)</h1>
      <div>具体描述xxx</div>
      <div>
        <Button type="primary" onClick={() => login()}>
          去使用
        </Button>
      </div>
    </div>
  );
};

export default Welcome;

拦截登录页跳转到欢迎页

src/plugin/index.tsx

import sdk from '@libs/sdk';
import '../libs/i18n';

// 必须使用pnpm安装依赖
console.log('--- plugin start ---');

// 这里通过传参的方式把资源传进来
// 这里面直接写sdk.kdrive.aside会导致插件不可用
ecissdk.register(
  (data: any) => {
    console.log('ecis: index start');
    console.log('ecis: index end', data, sdk);
  },
  async () => {
    console.log('ecis async start');
    // 初始化登录页拦截
    sdk.login.pageInit.onIntercept((data: any) => {
      console.log(data, 'onIntercept');

      const gotoWelcomePage = () => {
        // cid根据实现前端组件id修改
        const webpath = sdk.utils.env.webpath;
        window.location.replace(webpath + 'c/cid/index.html?cb=' + encodeURIComponent(window.location.href));
      };

      const storeName = 'LOGIN_WELCOME_INFO';
      const localInfo = localStorage.getItem(storeName);
      if (!localInfo) {
        return gotoWelcomePage();
      }
      try {
        const info = JSON.parse(localInfo) as { isJump: boolean };
        if (!info?.isJump) {
          // 未跳转过,进行跳转
          return gotoWelcomePage();
        }
      } catch (error) {
        console.error('login page init jump to welcome page error', error);
      }
      // 跳转过,保证后续重新进入登录页时再次跳转,需要重置localStorage
      localStorage.removeItem(storeName);
    });
    return {
      login: await sdk.login,
    };
  }
);

console.log('--- plugin end ---');

👉效果截图

D3HQT4Y6ACQFK
欢迎页
GOVDL5Q6AAQAG
登录页拦截跳转到欢迎页

相关新闻

  • 限制用户下载特定文件

    限制用户下载特定文件

    在员工离职或出于其它安全考虑,企业需要对员工创建或管理的文件进行管控,或对扫描出敏感信息的文件进行管控,限制文件下载。 如何限制企业用户下载特定文件 本定制方案仅适用于私有化WPS365版本 1. 方案概述 员工离职前,出于安全考虑,企业会对其创建或管理的文件进行管控。 管控会有两个实现方式: 有安全管控需求时,比如文件扫描出敏感信息,用户的网络环境(内网或外网)、文件大小不满足管理规定,都有可能需要限制下载。 针对这两种情况,我们可以使用文档中心Web端(PC端)的开放能力,定制下载功能: 实…

    最佳实践 2025年12月11日
  • PDF转Word全流程解决方案

    PDF转Word全流程解决方案

    方案简介 基于WPS WebOffice开放平台的格式转换能力,构建企业级文档中台,实现标书协议、合同管理、档案等PDF文件的自动化转换、结构化处理与业务系统无缝集成。 WPS WebOffice格式转换服务:提供PDF→Word的精准转换能力。支持保留原PDF的字体、段落、表格、图片等元素,针对扫描件PDF,支持OCR识别,支持单次上传100+文件批量转换。 企业文档中台:作为转换服务的调度中心和数据枢纽,实现转换流程与现有业务系统的无缝对接。拥有操作日志审计,完整记录转换操作的人员、时间、文…

    最佳实践 2025年12月11日
  • 应用中心增加常用应用

    应用中心增加常用应用

    出于使用便捷的考虑,企业需要将常用应用放在统一入口 如何在应用中心添加常用应用入口? 该组件仅适用于私有化WPS365版本 1. 插件概述 出于使用便捷的考虑,企业需要将常用应用放在统一入口里。 比如,企业会将自己的OA、ERP等常用应用地址放到应用中心里,变成一个能找到所需应用的快捷入口。 包含三类应用:WPS自带应用、第三方应用和企业自研应用。 针对这种需求,我们可以使用文档中心PC端的开放能力,定制应用中心入口 实现效果 企业可以将第三方应用或自研应用加入应用中心。比如:将WPS Offi…

    最佳实践 2025年12月11日
  • 企业团队/人员自定义属性标签

    企业团队/人员自定义属性标签

    根据企业需求,为人员或团队自定义属性标签,可根据属性标签决定WPS业务表现,如根据人员安全等级判断能否访问某文档 如何给企业团队/人员标记属性? 本定制方案仅适用于私有化WPS365版本 1. 方案概述 出于安全、效率的目的,有些企业需要给团队/人员标记属性: 文档中心里,可以在团队空间、通讯录的团队/人员名称这两个位置,标记属性。 我们可以通过文档中心服务端、Web端(PC端)的开放能力,为企业团队/人员标记属性: 效果 定制后,企业团队/人员名称旁会出现属性名称。红框为定制后的团队属性红框为…

    最佳实践 2025年12月11日
  • 扩展文件属性字段

    扩展文件属性字段

    企业需要在文件属性后打标签,方便后续查找和管理文件。

    最佳实践 2025年12月11日
  • 新增自定义侧边栏菜单

    新增自定义侧边栏菜单

    企业想把文档中心上定制的新功能放在文档中心上,可以将入口放在文档中心左侧Tab栏

    最佳实践 2025年12月11日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

立即咨询 立即试用 上门服务

请您留言

感谢您的关注,你可留下联系方式,我们将第一时间与您联系。