MENU

[泛微ecode] 组件重写-门户首页顶部导航栏欢迎词

• 2023 年 08 月 15 日 • 阅读: 1163 • 泛微OA

本项目改编自“云商店应用库”中的“门户首页顶部导航栏添加当前日期”项目,原作者:王斌(上海)
原项目简介:门户首页顶部导航栏添加当前日期*备注:此思路可以适用于在门户首页右侧导航栏自定义添加内容,比如:当前日期、天气、股票形势、特别事项等

本项目为丸子对ecode组件重写ecodeSDK.overwriteClassFnQueueMapSet(name,option)的学习与尝试~

丸子近期较忙,暂不梳理该小项目过程,且暂不提供帮助,文中代码回复可见,有问题请留言或一起在下面讨论区交流。

国际化欢迎词适配更新

2024年5月8日 12:04:14 更新添加国际化实现示例~现在,你可以对欢迎词进行国际化配置了~

实现滚动走马灯播放公告?这样!

2024年7月3日 17:57:57 可以自行修改代码实现走马灯效果,兼容性未测试~

<div className='ecode-new-popover-date'>{generatedGreeting}</div>

修改为:

<marquee className='ecode-new-popover-date'>{generatedGreeting}</marquee>
//更花里胡哨的操作,请参考HTML marquee API~

显示实时时间 yyyy年mm月dd日 hh:mm:ss 星期x

2024年7月4日 08:56:34 增加新能力,显示实时时间

一、项目介绍

以下介绍内容为Claude 2 AI生成~

1.介绍

这个组件通过复写 Ant Design 的 Popover 组件,实现在门户界面内根据时间显示随机问候语的功能,个性化交互场景增强用户体验。

2.特性

  • 根据不同时间段,显示不同问候语
  • 支持显示用户名,更个性化
  • 不影响 Popover 原有功能
  • 提供前置 CSS 样式,方便集成
  • 代码开箱即用,可直接用于项目中

3.技术优势

  • 通过组件复写方式扩展,无侵入
  • 模块化代码,具有可扩展性
  • 注释清晰,便于二次开发

4.总结

该组件让 OA 系统原有的门户首页顶部导航栏支持显示更友好的问候语,可以增加内部员工的亲和感和归属感。组件代码开箱即用,无侵入式集成,为 OA 系统提供了一个轻量级的用户体验优化方案。可以减少员工使用系统时的冷漠感,增强团队融洽度。

二、效果图

下午好~
夜深了~

三、代码

代码中保留并沿用了原项目的所有变量名及元素等,强迫症请自行更改~

init.js(前置加载)

此处内容需要评论回复后方可阅读

index.js

此处内容需要评论回复后方可阅读

init.css(前置加载)

此处内容需要评论回复后方可阅读

四、国际化实现示例

getGreeting方法的修改

getGreeting() {
    const { username, userLanguage } = JSON.parse(localStorage.getItem("theme-account"));
    const currentHour = new Date().getHours();
    let greetingCategory = "";

    if (currentHour >= 0 && currentHour < 5) {  
        greetingCategory = "night";  
    } else if (currentHour >= 5 && currentHour < 6) {  
        greetingCategory = "earlyMorning";  
    } else if (currentHour >= 6 && currentHour < 12) {  
        greetingCategory = "morning";  
    } else if (currentHour >= 12 && currentHour < 14) {  
        greetingCategory = "noon";  
    } else if (currentHour >= 14 && currentHour < 19) {  
        greetingCategory = "afternoon";  
    } else if (currentHour >= 19 && currentHour < 21) {  
        greetingCategory = "dusk";  
    } else if (currentHour >= 21 && currentHour < 24) {  
        greetingCategory = "evening";  
    }

    // 根据用户语言偏好选择对应的问候语数据
    const greetings = greetingsData[userLanguage][greetingCategory];
    const greeting = greetings[Math.floor(Math.random() * greetings.length)];

    return greeting.replace("{username}", username);
}

greetingsData数据的修改

const greetingsData = {
  "7": { // 简体中文
    "night": [
      "凌晨好,{username},夜深了,早些歇息吧。",
      "深夜时分,{username},注意保重身体哦。"
    ],
    "earlyMorning": [
      "早上好,{username}!美好的一天从早安开始!",
      "清晨好,{username},早起的鸟儿有虫吃呢。",
      "早晨好,{username}!希望您拥有一个精神饱满的好开始!" 
    ],
    // 其他时间段的问候语
  },
  "8": { // 英文
    "night": [
      "Good night, {username}. It's late, get some rest.",
      "Late at night, {username}. Take care of yourself."
    ],
    "earlyMorning": [
      "Good morning, {username}! A great day starts with a good morning!",
      "Good morning, {username}. The early bird catches the worm.",
      "Good morning, {username}! Wishing you a vibrant start!" 
    ],
    // 其他时间段的问候语
  },
  "9": { // 繁體中文
    "night": [
      "凌晨好,{username},夜深了,早些歇息吧。",
      "深夜時分,{username},注意保重身體哦。"
    ],
    "earlyMorning": [
      "早上好,{username}!美好的一天從早安開始!",
      "清晨好,{username},早起的鳥兒有蟲吃呢。",
      "早晨好,{username}!希望您擁有一個精神飽滿的好開始!" 
    ],
    // 其他时间段的问候语
  }
};

五、显示实时时间

如果你想右上角实时显示时间,那你可以这样做:
index.js替换为以下内容
index.js

const { Popover } = antd;

class NewPopover extends React.Component {
  constructor(props) {
    super(props);
    this.state = {
      currentDateTime: this.getCurrentDateTime()
    }
  }

  componentDidMount() {
    this.intervalId = setInterval(() => {
      this.setState({ currentDateTime: this.getCurrentDateTime() });
    }, 1000); // 每秒更新一次
  }

  componentWillUnmount() {
    clearInterval(this.intervalId);
  }

  getCurrentDateTime() {
    const now = new Date();
    const year = now.getFullYear();
    const month = String(now.getMonth() + 1).padStart(2, '0');
    const date = String(now.getDate()).padStart(2, '0');
    const hours = String(now.getHours()).padStart(2, '0');
    const minutes = String(now.getMinutes()).padStart(2, '0');
    const seconds = String(now.getSeconds()).padStart(2, '0');
    const daysOfWeek = ["星期天", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"];
    const dayOfWeek = daysOfWeek[now.getDay()];

    return `${year}年${month}月${date}日 ${hours}:${minutes}:${seconds} ${dayOfWeek}`;
  }

  render() {
    const { currentDateTime } = this.state;
    let newProps = { ...this.props };
    return (
      <div className='ecode-new-popover'>
        <Popover {...newProps} _noOverwrite />
        <div className='ecode-new-popover-date'>{currentDateTime}</div>
      </div>
    )
  }
}

//发布模块
ecodeSDK.setCom('${appId}','NewPopover',NewPopover);
最后编辑于: 2024 年 07 月 04 日
返回文章列表 打赏
本页链接的二维码
打赏二维码
添加新评论

已有 73 条评论
  1. 打工仔 打工仔

    @(吐舌)

  2. sss sss

    这个功能特别帮,感谢大佬,拿来测试下

  3. 庞

  4. 小黄鸭 小黄鸭

    1

  5. ck ck

    niupi

  6. 不牛逼 不牛逼

    墙都不扶就服你

  7. Hu Hu

    666

  8. 海昏侯 海昏侯

    小黄鸭让我来看的

  9. 我爱吃兽奶 我爱吃兽奶
  10. 夜寒 夜寒

    来学习了

  11. ck ck

    qqqq

  12. 图图脑海 图图脑海

    bucuo

  13. 孙

  14. \#(献花)优化:可在.ecode-new-popover-date的css中增加以下两个属性,以取消鼠标手型与文字禁止选中: cursor: default; user-select: none;

  15. 青菜 青菜

    6

  16. 测试 测试

    @(哈哈)

  17. 1 1

    测试

  18. nh nh

    来学习了

  19. 键盘打工人 键盘打工人

    1

  20. wxvbee wxvbee

    学习学习

  21. 我爱吃兽奶 我爱吃兽奶

    dong

  22. feng feng

    woyeyaoyanjiu@(哈哈)

  23. 1 1

    6

  24. 图图脑海 图图脑海

    感谢

  25. 图图脑海 图图脑海

    感谢

  26. zi zi

    还厉害@(呵呵)

  27. 杨桃 杨桃

    来学习!

  28. 楚轩 楚轩

    这方面的知识太少,非常感谢

  29. 曾经我很刚 曾经我很刚

    666

  30. 王阳 王阳

    非常不错。

  31. pyy pyy

    1

  32. pyy pyy

    1

  33. 。

    6

  34. null null

    我看看你

  35. 邓

    优秀

  36. qqq qqq

    学习一下!

  37. a a

    1

  38. 夜寒 夜寒

    怎么每次看都要评论

    1. @夜寒0.0,唔,因为没有记录当前用户登录状态。

  39. 1111 1111

    啛啛喳喳

  40. testha testha

    发现新大陆了,

  41. 1 1

    牛子

  42. 小明 小明

    想看

  43. smilywho smilywho

    这是迟到的签到

  44. boos boos

    非常需要

  45. yuz_wl yuz_wl

    学习下,感谢分享

  46. xcl xcl

    超牛的技术,来学习一下这篇帖子

  47. 夜寒 夜寒

    再看一次

  48. zz zz

    发现新大陆

  49. 404 404

    让我看看

  50. 404 404

    问题来了。。。可以实现国际化吗,比如切换英文...

    1. @404好需求!这是可以实现的!修改getGreeting方法并配置greetingsData的欢迎词内容即可,稍后,我将更新这篇文章~
      已更新,现在,你可以在本文章看到国际化实现示例段落~

    2. 404 404

      @丸子牛的\#(高兴)

  51. 1 1

    ··

  52. 牛逼了丸子

  53. Starryov0 Starryov0

    @(小乖)

  54. kk kk

    前来学习一下@(呵呵)

  55. xianwei xianwei

    学习

  56. E9 E9

    @(呵呵)

  57. DDR DDR

    测试

  58. 叶

    学习

  59. 123 123

    牛逼

  60. 历飞雨 历飞雨

    仰望大佬

  61. 搬砖工 搬砖工

    666

  62. Ember Ember

    大佬

  63. 老六

  64. 蛋子 蛋子

    来学习一下

  65. 1 1

    1

  66. 回见 回见

    学习一下@(真棒)

  67. 马楼 马楼

    太牛了

  68. ca ca

    1

  69. 底层 底层

    学习一下

  70. a a

    膜拜