无界+Pure-Admin 微前端改造细节

  1. 优化husky校验规则,添加代码提交校验,避免随意提交导致代码可读性降低。
  2. 给主应用添加了开发文档入口,方便在开发时查阅文档,提升开发效率。
  3. 优化了控制台的构建提示,更换为“👏欢迎使用${blue("无界[Wujie]")}-极致的微前端框架”。
  4. 项目开启了Mock服务,当接口需要对接时候关闭相关服务即可,目前已经定位到相关代码位置。
  5. 配置了项目的基础配置,主应用导航栏使用水平布局(上下分层),同时隐藏标签页,子应用默认使用垂直布局(左右分层),主应用不允许修改布局,子应用开放修改(暂定)。
  6. 给主应用添加了接口请求地址设置,便于在开发和部署时生成不同的请求URL地址,在utils/http中添加baseURL设置。
  7. 替换了项目的默认用户头像。
  8. 对主应用主体内容区域的样式进行了调整,保证子应用和主应用页面能够显示完全,去除浏览器默认滚动条。
  9. 修复了部署后个性化设置按钮隐藏后,点击头像显示的下拉框内容换行的问题。
  10. 主子应用使用单点登录,主子应用使用同一个后台管理系统框架(pure-admin),主应用在加载子应用的时候将用户名、角色类型和accessToken传给子应用,子应用自动完成登录和重定向,同时,子应用可以单独运行,有独立的登录等完整功能。
  11. 主应用添加系统管理子应用入口,同时优化了加载逻辑,使用asyncRoute加载子系统路由,后续可以根据用户&主体进行动态区分。
  12. 排查发现之前的demo在别的电脑进入预览链接,子应用加载不出来,原因是入口URL使用的是localhost,运行的电脑未启动该子应用,改成局域网地址就可以访问了,如:192.168.1.1。
  13. 使用tailwindCSS原子化样式框架,重写了主应用的首页代码,熟悉了相关写法。
  14. 主应用引入无界生命周期、hostMap和credentialFetch等方法,同时注册了eventBus监听事件,方便子应用进行通信。
  15. 在主应用(Vue3)的全局变量(getCurrentInstance().appContext.config.globalProperties)中注入了$WujieVue的无界实例,便于在其他页面获取bus等工具。
  16. 成功注册了系统管理子应用,安排在本地的8080端口,主应用使用8848端口。
  17. 使用主应用框架和配置项为模版构建了系统管理子应用,去除了无界相关的设置,由主应用注入相关配置,子应用目前无需改造。
  18. 优化主应用和子应用联动的基础能力,在主应用点击切换为暗色模式时子应用获取监听的事件,同步进行切换,若子已为暗色模式,主为亮色模式,主切换时同步暗色模式更改(由toggle改为赋值)。
  19. 还联动了主题颜色的切换,修复了子应用初始化时菜单栏没有设置上主题的问题,触发原因未知导致html标签class中未添加layout-theme-xxx的类名,因此进行动态判断,如果window.__POWERED_BY_WUJIE__存在的话,则手动给html加上指定样式,保证子应用和主应用的主题保持一致。
  20. 隐藏了子应用在无界环境下色弱模式和灰色模式的设置按钮,默认关闭,如果需要这两个模式由主应用主动开启/应用即可,子应用开启会导致页面样式异常,故隐藏。
  21. 子应用重新进行 pnpm install 启用husky提交校验,将主应用和子应用使用到Sass-darken方法改为'Sass:color.adjust'方法,因为不通过eslint校验。
  22. 修复了主应用在移动端时导航栏仍呈现PC端样式导致显示不全的问题,放开主应用useResizeObserver方法中isMobile则禁用的规则,还修改根据屏幕宽度切换主题模式。
  23. 子应用也放开了,同时修复了子应用在无界环境下,移动端抽屉按钮点击失灵的方法,因为都用到了useResizeObserver的方法,查看源码发现其实现方式通过元素选择器进行判断,主子应用存在同样的元素,则取到了主应用元素的状态导致开启失败,给主应用的监听元素添加main-的前缀,则可以进行正确监听,主子应用都能正确打开对应的抽屉菜单。
  24. 修复了主应用在切换子应用的过程中主容器会出现滚动条的问题,排查是切换时默认使用到fade-transform的transition动画,去除了里面的transform样式并添加overflow为hidden即可。
  25. 在路由类型文件(router.d.ts)中添加了isPoweredByWujie用于判断该路由是否为无界子应用。
  26. 主&子应用同时开启打包时使用cdn替换本地库和Gzip&Brotli压缩,便于部署时进一步压缩打包体积。
  27. 修复了在PC端浏览器宽度按最小化时,子应用显示的折叠菜单栏和主应用的抽屉菜单栏相互遮挡的问题,提升了主应用的侧边栏显示权重。
  28. 优化了主子应用异常页面(403、404和500)的布局方式,在小屏幕下也能够正常显示不被遮挡。
  29. 优化了主应用进入子应用的入口页配置,取消子应用的跳转,采用子应用的redirect模块自动完成重定向功能,避免子应用页面出现闪烁的问题。
  30. 更改了主应用index.html的默认显示title和serverConfig中的Title参数。
  31. 子应用添加权限管理相关页面,配置了asyncRoutes和Mock相关的接口,现在能够正常显示相关页面,不过现在起到仅展示功能未接入相关接口,同时还需要后期设计。
  32. 全局使用iconify-icons图标,方便引入多种类型的图标,同时支持本地化图标和在线图标。
  33. 修复VSCode中Typescript提示“@/xxx/xxx”模块找不到或其相应的类型声明的问题,原因是使用IDE中使用的Typescript解析版本太高,切换为workspace指定的版本就不会报错了。
  34. 子应用启用@pureadmin/table组件,使用二次封装的el-table组件,支持列拖动、列表刷新和密度调整功能。
  35. 修复了子应用中el-popover定位异常的问题,原因是el-popover使用到的是popper.js 2.0,这个库会以此递归直至到最外层的HTML标签,对于webComponent-shadowDOM中的HTML并没有停止递归认为其是终点,解决方式给子应用的body表填添加了position:relative即可。
  36. 为了给予主子应用在移动端时一定的区分度,故在无界环境下,给子应用的导航栏添加系统名称并更换了抽屉的icon,去除最小宽度的限制,避免较小分辨率的手机导航栏显示不全的问题。
  37. 当子应用在无界环境点击侧边栏,子容器的高度定位出现问题,已修复。
  38. 优化了redirect组件的页面样式,在初次加载子应用的时候会进行重定向,给予用户一定的提示,避免以为是页面卡住了。
  39. 了解了关闭标签页的方式,在页面中引入useMultiTagsStoreHook().handleTag("splice", route.path)方法即可关闭当前页,原本写了一个redirect的页面来做重定向发现已经有组件故舍弃。
  40. 给子应用全局做了无界判断,确保在无界环境和独立运行时显示对应的样式。
  41. 由于子应用在主应用运行时使用到了保活模式,导致即便是退出登录重新进入子应用仍保留原来的状态,故在退出登录时清理完毕后,调用window.location.reload方法刷新页面将子应用销毁,另一种方式是通过子应用实例的destory方法,但是执行后就再也打不开子应用了,故采用刷新页面的方式。
  42. 彻底解决主应用访问子应用,子应用Mock接口跨域的问题,去除response的箭头函数,改为es6写法即response (xxx) {},同时通过this.res.setHeader方法设置接口响应头,将跨域限制取消了,之后无需浏览器安装跨域插件也能够正常访问。
  43. 提升了主应用与子应用联动的基础能力,当主应用主动切换为暗色模式,若还未点击子应用,暗色模式无法应用到子应用中。现在通过无界props注入dataTheme参数,子应用判断wujie.props.dataTheme是否存在完成默认主题初始化。
  44. 主应用优化了个性化设置菜单的显示规则,修改环境变量,在正式/预发布环境时放出入口按钮,子应用仅在开发环境下显示配置按钮。
  45. pure-admin推出4.5.0版本,主子应用完成同步更新,搜索框支持拼音搜索。
  46. 修复当主应用切换了主题颜色,而子应用尚未激活,进入子应用后仍呈现默认主题的问题,解决方式:当处于无界环境时,根据props中的值手动设置一次背景颜色。
  47. 调整了主应用导航栏logo区域右边框的颜色获取方式,由color.darken改为color.invert,降低反转权重,使其与主题更加协调。
  48. 修复了主应用开启暗色模式,iframe迁入的子系统颜色异常的问题,原因是暗色模式会给子应用容器开启滤镜,去掉即可。
  49. 在主应用在中二次封装了子应用入口组件,并注册为全局组件,将许多本地化设置全部提取到组件中,后续若有新系统需要添加到主应用中直接使用封装后的组件即可,降低维护人员的心智压力。
  50. 提升了主应用跳转子应用的基础能力,支持携带参数,针对子应用未激活/保活状态做了兼容,子应用需要进行事件监听,除此之外无需其他改造。
  51. 在主应用和子应用欢迎页中添加了跳转按钮,便于测试主跳子、子跳主的情况,目前这两种情况能够正常进行。
  52. 在考虑子跳子的情况时候思路出现了偏差,如果是子应用内部页面跳转的时候使用router.push即可,而不是使用子跳主的方法由主应用调度跳转。
  53. 如果是不同的子应用跳转,直接使用无界的eventBus.$emit提交跳转事件,由目标子应用接收事件内部进行跳转即可,因为目前的子应用全部设计为保活模式。
  54. 调整了无界子应用监听的路由跳转事件名称,添加子系统前缀,避免多个子系统同时监听同一事件,导致跳转异常的问题。(已集成在wujieSubApp内,后续子系统直接使用即可,无需额外设置)
  55. 对接接口的时候不能使用baseURL对所有接口进行拦截,而应该使用api/utils中的baseUrlApi方法为接口添加请求前缀,确保接口请求能够正确打到后端服务。
  56. 修复了子应用在主应用中运行时element-plus组件库提示invaild event validation的问题,使用plugin将window的event事件绑定到window.parent上面去即可。原因是无界将子应用的页面结构放置到和主应用同级,而子应用的js相关文件却在iframe沙箱中执行,需要手动挂载事件才行。
  57. 优化了主应用和子应用的首页布局,方便调试页面跳转功能。
  58. 给主应用和子应用的登录页添加了Mock接口的开关,当后端未开启服务时可以打开开关,让项目的接口走本地的模拟接口,避免出现登录无反应无法进入应用的问题。
  59. 优化了登录接口的处理逻辑,给主应用和子应用的getLogin添加接口出现错误时的处理,避免出现页面卡住只能刷新才能使用的问题。
  60. 去除了主应用跳转子应用后主应用URL的请求to等参数,避免过多参数给用户带来困扰。
  61. 子应用添加了部门管理的新增/编辑部门的接口配置,方便后端进行调试。
  62. 新增菜单管理页面,添加了图标、组件路径、路由路径等参数,实现了简单的菜单管理功能,隐藏了颗粒权限和异常的相关页面。
  63. 新增菜单管理Mock接口,给添加菜单弹窗加了目录/菜单/按钮的分类,Mock接口以树状的数据结构展示,提供三种情况的数据类型,方便后端写对应接口。
  64. 优化主应用配置,在main.ts中去除大部分子应用的配置项,全部抽离到app.tsx中,进一步降低开发人员的心智成本。
  65. 引入wujie-polyfill插件,原因是子应用请求全屏无反应,插件兼容了 moz 、webkit 、ms 等前缀的全屏对象,修复了子应用无法调用全屏的问题。
  66. 给子应用-部门管理的新增、编辑和删除接入了后端接口,等待后端进行调试修改代码。
  67. 修复子应用在无界环境下,输入框使用输入法打字时控制台提示compositionstart、compositionupdate和compositionend事件类型校验失败的问题,在jsbeforeloader中将子应用的CompositionEvent事件挂载到主应用中,原因是因为无界将子应用的elementPlus组件的引入取消了,取而代之的是使用主应用的elementPlus故产生这种问题。
  68. 修复了子应用使用原生iframe嵌入时,点击全屏按钮无反应的问题,给iframe标签添加了allowfullscreen属性即可,之前的polyfill插件解决的是使用无界迁入子应用时全屏失效的问题,现在是原生iframe的全屏问题。
  69. 子应用首页更新添加菜单管理入口,方便刷新页面时进行跳转。
  70. 优化了主应用中绑定DocFullScrollPlugin的条件,当是降级模式时则跳过绑定。
  71. 修复了主应用和子应用主体内容区域中keep-alive组件include属性提示类型不符的问题,原因是script中定义了keepAlive变量和keep-alive组件冲突了,更换变量名即可。
  72. 修复了在无界环境下,系统管理相关页面的pure-table的tooltip位置异常的问题,原因是子应用在无界运行时,顶部还有一个导航栏占据了48px的高度,而tooltip进行定位时是按照最外层的HTML进行定位,没有在原来基础上添加48px的偏移,故在无界环境下给pure-table添加48px的偏移即可。
  73. 与后端对接了部门管理的相关接口,统一了接口请求结果的格式,包含data、success和message,部门管理整体为多根节点的树状结构,每一个跟代表一个公司,后续由后端根据token进行数据隔离,目前初步对接了新增、编辑和删除接口。
  74. 给系统管理utils函数中的生成树添加了按照sort参数进行排序的功能,便于菜单管理和部门管理中的树状结构能够呈现较好的顺序。
  75. 主应用修复了el-select远程搜索时回调函数返回的query为undefined的问题,查看组件源码最终定位到debouncedQueryChange方法中的e.target指向出现问题,给主应用添加上wujie-polyfill的EventTargetPlugin插件即可解决,同时还修复了其他同类型e.target指向异常的问题。
  76. 给系统管理的相关列表页的筛选数据栏添加了change和keyup.enter事件,方便用户快速筛选数据。
  77. 新增session共享功能,当用户在一个页面登录后,打开一个新标签页然后输入相同网址,也能共享登录状态,用户无需进行重新登录,降低操作冗余度。
  78. 优化session共享代码逻辑,当用户点击退出登录时,所有同网址的标签页同时退出,清空登录状态,避免出现极端情况导致应用运行异常。
  79. 优化系统管理页面onSearch方法的书写方式,将async/await格式改为Promise.then.catch.finally方便调试,第一种方式只能try/catch捕捉错误。
  80. 主应用和子应用调整了接口超时的限制,将时间从10s提升至60s。
  81. 主应用和子应用实现了token无感刷新的功能,当AccessToken失效时自动调用refreshToken接口刷新token,并重试请求,避免页面卡住影响用户使用体验。
  82. 优化重试请求的处理逻辑,将res.data抛出,使其和正常请求的格式保持一致,页面请求无需二次处理。
  83. 针对主应用和子应用refreshToken刷新失败的情况分别进行处理,主应用刷新失败则提示用户重新登录,2s后跳转到登录页并清理登录状态;子应用刷新失败同样提示用户,但需要判断是否处于无界环境,若是则通过eventBus提交事件,申请主应用主动退出并清理登录状态,若不是则跳转到登录页并清理登录状态。
  84. 修改主应用跳转子应用后移除URL中的to参数的方法,兼容history模式。
  85. 主应用尝试为子应用开启路由同步,但是存在history.state丢失的问题,目前仅控制台报错,程序运行尚可,先观察一段时间后再考虑是否启用。
  86. 为主应用和子应用添加登录后跳转登录前指定的页面页面的处理,让用户登录后无需再点击菜单才能进入目标页面。
  87. 修复了主应用和子应用在移动端时弹窗宽度塌陷的问题,同时还解决了移动端级联选择器被遮挡的问题。
  88. 修复pure-table组件在无界环境下表格高度计算仅在初始化时计算正确,后续计算均有误的问题,改为本地引入,并手动修改源码兼容无界环境。
  89. 修复了本地代码提交时会执行stylelint:stage命令,导致媒体查询中的“max-width”被错误地替换成“width <=”的问题,目前是使用/* stylelint-disable */该命令中断命令的执行,后续再看看有没有其他更好的方法。
  90. 尝试给el-scrollbar内部内容区域设置自适应高度,但是会导致其他页面的滚动条消失,目前的想法是需要自适应的组件,自行使用setAdaptive来设置内容区域的高度。(原因是el-scrollbar是通过view和wrap两层的高度对比控制是否展现滚动条,写死view的高度会导致其他滚动条失效。所以仅能由内容区域的高度撑开view,才能保证高度自适应并且不影响其他页面的滚动)
  91. 将主应用中的无界插件改为本地引入,引入了wujie-core和wujie-vue两个项目,目的是为了解决开启路由同步后主应用切换子应用容器路由和主应用路由时,控制台提示history.state意外丢失的问题。
  92. 调整了无界插件的预警提示规则,当处于生产环境时,禁用“监听事件为空”的提示。
  93. 给主应用添加了切换角色的功能,入口在右上角,当切换角色时,内部变量切换为该角色,并清理所有已缓存的页面。由于无界插件未提供refreshApp的方法,无法手动刷新保活的子应用,故采用刷新页面的方式释放缓存的子应用。
  94. 刷新页面会导致内部存储丢失,故引入pinia-plugin-persist的插件,实现了内置存储store的持久化。
  95. 给子应用新增了角色切换的功能,和主应用共享同一个user-info的会话存储,自动从主应用获取当前选中的角色,并且能够根据选中的角色对应用的路由进行筛选。
  96. 当处于无界环境时,子应用隐藏角色切换的按钮,当子应用独立运行时,在三种模式的布局中添加了角色切换的按钮。
  97. 修复了子应用在跳转未授权页面的时候仍能跳转的问题,将路由守卫中的规则改为从currentRole中获取即可。
  98. 调整了主应用和子应用的“页面权限”页面的切换角色逻辑,仅供开发人员参考,后续相关页面会隐藏,并且做了无界环境判断。
  99. 修复了子应用在未登录时输入动态路由后,URL栏中redirect属性被错误指向到/error/404页面的问题,处理方法目前是简单粗暴地刷新页面,后续看看有没有更好的方法,估计是退出登录后initRouter导致路由表发生异常导致的。
  100. 子应用引入session共享功能,当独立运行时只要一个标签页登录了,任意打开新的页面输入相同URL能够同步登录状态(出于无界环境时则关闭)。
  101. 主应用和子应用暂时关闭pinia的persist功能,因为仅用户的存储库使用到了这个功能,而其在刷新后会自动获取userinfo存储的值,无需额外设置另外一个存储器。还有就是因为子应用开启了会导致其在无界环境时页面展示异常。
  102. 主应用引入无界polyfill的InstanceofPlugin插件,彻底解决issue这个[https://github.com/Tencent/wujie/issues/300],无需手动绑定事件到主应用的window上。
  103. 调整了主应用和子应用的异常页面点击回到首页按钮的处理,之前点击后仅回到首页,标签页还是会存在该页面,现在处理成回到首页的同时关闭该标签页。
  104. 给主子应用都添加了退出浏览器重新打开页面,若token未失效时,自动获取用户信息并跳转到指定页面的功能,无需二次登陆。
  105. 调整了自动登录时获取用户信息的接口,因为前端不能明文存储用户的帐号密码,所以和后端协调新增/getUserInfo接口,通过用户的token来获取用户的信息,自动完成登录处理,登录成功后会在控制台提示“自动登陆成功 ===> 路由守卫生效中/登录页自动处理”。
  106. 优化了自动登录的处理逻辑,给路由守卫添加了处理,无需跳转到login后由登录页进行处理,避免页面短暂闪烁登录页的样式后又跳转到指定页面。已经给主子应用设置了这个功能。
  107. 修复了主应用和子应用在动态路由未加载时,刷新页面控制台提示:[Vue Router warn]: No match found for location with path的问题,添加了全匹配的路由规则即可,使得在初始化匹配时能够正确匹配到‘404’页面,避免出现无匹配的问题。
  108. 优化了子应用初始化时,getConfig中的async/await的嵌套处理,去除无用的async修饰符。
  109. 修复了主应用初次通过导航栏进入子应用时,子应用的入口路径被错误清除的问题,会导致刷新页面后回到主应用首页的问题。
  110. 优化了主应用中wujieSubApp组件的逻辑,发现子应用无需主动传递用户信息,子应用会自动从user-info的会话存储中获取相关信息,故去除相关参数,并保留用户的信息,若需要可以从window.$wujie.props.userParams中获取。
  111. 修复了主应用和子应用自动登录获取用户信息接口报错时,页面会卡住无法跳转的问题。
  112. 修复了主应用和子应用单点登录时角色参数获取后未被正确地转换为数组,导致页面出现异常的问题,具体是对角色参数的值进行判断,若为字符串,则进行手动分隔成数组。
  113. 给主应用和子应用添加了单点登录自动补全用户信息的功能,避免缺少用户信息导致鉴权失败而跳转到登录页。
  114. 当主应用中嵌套了子应用时,为子应用添加了独立运行的功能,借助了之前在props中传递的用户信息,新打开了一个标签页携带用户信息,完成单点登录即可。
  115. 修复了主应用和子应用在单点登录成功后URL仍携带了用户信息的问题,原因指向路由的beforeEach函数,错误地将地址中的用户信息也传递给了跳转路由的方法,解决办法是将用户信息去除后再传递至跳转路由处。
  116. 修复了子应用点击重新刷新页面按钮时,提示404的问题,原因是重定向到redirect.vue组件,却没有被路由匹配成功,新增了一个redirect-new.vue组件替代原来的,暂时解决了。
  117. 给表格操作组件中的列设置添加了记住用户选择的功能,重新进入页面时会恢复用户之前的设置,目前是存储在本地,后续可以存储至服务器。
  118. 修复了主应用和子应用的搜索和角色切换组件,存在捆绑关系的问题,并添加键盘快捷键通过ctrl+。快速打开搜索窗口,ctrl+/快速打开角色切换窗口。
  119. 修复了el-tree组件在父级容器宽度较小的情况下,叶子节点被错误地隐藏的问题。
  120. 优化了子应用的首页功能,添加了重定向组件以及重定向到首页的功能,方便进行调试。
  121. 子应用添加了用户管理、角色管理、菜单管理、部门管理、岗位管理、操作日志管理和登录日志管理的入口路由,并且都添加了默认的helloworld页面。
  122. 给子应用添加了用户管理的功能,能够按照部门对用户进行筛选,添加了用户编号、用户名称、手机号、状态的筛选栏,并且提供按照模版导入用户及导出用户的功能。
  123. 子应用添加了角色管理的功能,筛选栏有角色名称、角色标识及状态的选项,提供角色的增删改查的功能。
  124. 子应用添加了菜单管理的功能页面,筛选栏中有菜单名称及状态的选项,菜单以树状结构予以展示,新增菜单中提供菜单(页面、目录、内嵌iframe及外联跳转)和按钮层级的选择,并且能够设置菜单/按钮的图标、排序等功能。
  125. 子应用添加了部门管理页面,以树状结构展示,可通过名称和状态进行数据筛选。
  126. 子应用添加了岗位管理页面,提供岗位编码、岗位名称、状态及时间的筛选功能,提供岗位的增删改查及导出功能。
  127. 子应用添加了操作日志页面,方便查看谁在哪个模块进行了何种操作,并提供操作的详细数据,以便追溯和bug定位。
  128. 子应用添加了登录日志的功能,可以清楚的统计具体的登录情况。
  129. 子应用添加了个人中心的功能,后续再同步至主应用。
  130. 添加了个人中心的mock数据,以便在接口未开发时,也能展现完整的页面功能。
  131. 优化了主应用的路由设置,避免在搜索窗口中出现两个完全相同的路由选项。
  132. 主应用中的集成系统路由改名为浆染化料系统,后续如果需要接入该系统则需要对其进行改造,现阶段想要访问则需要通过跨域浏览器插件才能实现。
  133. 优化了子应用的搜索组件及角色切换组件,当处于无界环境时,则不提供键盘快捷打开方式,避免和主应用的快捷方式发生冲突。
  134. 研究了应该如何在主应用/子应用中主动销毁子应用,其原理是清空沙箱对象,使其子应用实例完成重置,后续再使用该方法对原先使用到window.reload的地方进行优化。
  135. 主应用添加了个人中心页面,引入copperjs方便进行头像裁剪。
  136. 主应用升级wujie为1.0.20版本,已经同步修改。
  137. 针对浆染化料系统,修改了nginx配置,使其接口、静态资源、document文档等访问皆可通过跨域请求的限制。
  138. 添加了jsAfterLoader,实现了浆染化料系统作为子应用迁入主应用时能够自动完成登录的功能。
  139. 主应用添加了主动降级开关,使得子应用可以使用iframe的方式进行嵌入,同时还能享受无界框架带来的便利。
  140. 针对子应用在降级模式下的布局错乱、点击事件失效的问题进行了修复,使其和正常模式下的表现正常。
  141. 在项目设置菜单中添加了子应用渲染模式的设置,更改了切换渲染模式的处理逻辑,由销毁指定应用改为全部销毁。
  142. 修复了token失效了以后,重新刷新token并重试请求,新的请求无法被原来的处理函数所接收的问题,原因是新请求的axios实例和原来的不是同一个,改成同一个实例即可。
  143. 优化了refreshToken的取值方式,之前的取值方式无法获取该值,定义了新的函数用于取值,并去除cookie中的refreshToken,避免出现请求被拦截后恶意获取token进行攻击的问题。
  144. 更换了主应用的Title属性为“EMI协同管控平台”(暂定),并更换了favicon,用于浏览器标签页左侧的图标展示。
  145. 修改了用户管理中角色选择器的类型,改为多选,调整了数据类型为Array<number>,针对传来的数据进行兜底处理。
  146. 修复了子应用嵌入运行时部署刷新后还是之前版本的问题,解决方式为重写了window.fetch设置no-cache避免子应用资源缓存。
  147. 重写了子应用嵌入时候传入的fetch方法,设置credentials为includes模式,配置了子应用本地开发服务器cors设置,确保资源能够携带cookies;设置了credentialsIgnoreList在子应用请求在线图标时取消携带cookie。
  148. 修复了角色管理中角色修改/新增后列表未更新的问题,调整了停用和启用角色时的提示,避免出现undefined。
  149. 调整了岗位管理、登录日志和操作日志管理中的多选列属性,添加fixed:left,固定在左侧,并且添加label属性,避免列设置出现拖动异常的问题。
  150. 给菜单管理的新增和编辑页面设置了必填项的限制,避免缺少部分属性导致后面生成路由表时出错。
  151. 修复了当菜单管理中没有菜单选项时,点击新增按钮无法打开弹窗的问题。
  152. 修复了当子应用独立运行时,项目设置中侧边栏logo为开启状态,而实际却没有的问题,默认设置为独立运行时开启,嵌入运行时关闭。
  153. 修复了子应用的部分window属性值在初始化后不再变化的问题,原因是框架仅在初始化时进行了赋值,而后续主应用变化,没有继续将值传递给子应用的window,解决办法是在主应用中添加jsBeforeLoaders重写对应属性的getter方法即可。
  154. 重写子window属性的属性名列表添加类型限制,避免填入不属于window的属性,并在开发阶段就能够提示出来。
  155. 当子应用处于暗色模式下,各个管理页面的模块有盒子阴影会显得很突兀,故去除了暗色模式下的模块阴影。
  156. 修复了子应用点击侧边栏切换时,右侧表格高度没有自动调整的问题,解决办法为子应用嵌入时通知主应用手动执行一次resize事件,独立运行则直接执行resize事件即可。
  157. 调整了用户管理的角色列显示方式,当赋予了当前角色多个角色,会显示第一个角色,其余角色收起,当鼠标移入时才展示所有的角色。
  158. 调整了用户管理的重置密码的正则表达式,与登录页的正则保持一致。
  159. 调整了菜单管理的权限标识的展示方式,当未填入权限标识时显示子类型,并调整了图标选择组件添加清除图标按钮,同时修改图标为非必填项。
  160. 修复用户管理左侧部门取消选中后,右侧用户列表没刷新的问题,同时给重置状态按钮添加了重置列表选择的功能,之前是只有控制部门树的功能。
  161. 修复了操作日志和登录日志页面中,当表格排序变化后点击分页相关的按钮时,排序字段丢失的问题,同时导出也有这个问题,已同步修复。
  162. 修复了管理相关页面中存在时间选择器的页面,ts提示类型不合适的问题。
  163. 主子应用实现了iframe切换页面后仍能保活的功能,至此平台支持三种模式来加载子应用,分别是:无界正常模式 (webComponent加载DOM,iframe加载JS)、无界降级模式(使用iframe分别加载DOM和JS)和 原生iframe模式 (全部由iframe加载)。原生iframe模式提供 是否保活的功能设置(默认开启),可由用户自行切换。
  164. 调整了主子应用的测试路由表,使其更加合理,部分选项收拢进二级菜单,让界面更加简洁。
  165. 调整了主应用首页的平台亮点,更新描述并添加iframe保活介绍。
  166. 尝试部署至websitetest.goomaker.com,修复了子应用提示Expect JavaScript Module but return text/html的mime类型错误的问题,原因是开启了cdn替换导致模块打包异常,关闭cdn即可。
  167. 主子应用添加了自定义指令,给盒子添加后出现一个展开/收拢的按钮,方便用户进行聚焦主体内容进行查看。
  168. 暂时关闭同步退出功能,该功能在同源环境下会导致子应用退出,主应用也跟着退出问题,暂时无解,先屏蔽。
  169. 主应用由于隐藏了标签页管理器,所以里面提供的全屏功能无法触发,故在设置页面添加全屏切换按钮,会同时通知子应用的标签页管理器同步全屏的状态。
  170. 子应用表格组件新增聚焦功能,表格区域全屏展示,并调整布局密度为紧凑,同时让表格撑满剩余空间,尽可能展示更多的数据。
  171. 调整了子应用所有页面的列宽度,并能够根据当前窗口的宽度进行动态调整,避免小屏幕下操作栏宽度过大导致数据展示不全的问题。
  172. 调整了导入导出的功能设置,优化了导出名称,添加时间戳方便分辨,同时制定了导出的URL前缀,避免接口请求中出现undefined。
  173. 修复了聚焦表格功能在聚焦后表格无法滚动的问题。
  174. 重新命名了子应用用于不携带url.query的重定向路由的名称,由redirectWithoutQuery改为redirect-lite,使得加载子应用时URL展示不会过于凌乱。
  175. 修改平台逻辑,每次刷新页面时会调用一次获取用户信息的接口,避免在别处修改了当前用户的信息,而此处还是原来的。
  176. 彻底重构用户信息的存储方式,去除页签更新头像通讯,改为每次刷新时获取最新的用户信息,避免逻辑混乱提升维护难度。
  177. 调整了主应用中的子应用入口vue文件,整理后全部放到views/subApps/文件夹中,后续添加子应用直接在该文件夹下添加即可。
  178. 抽离了主子应用三种导航模式下个人信息模块,避免需要同时修改三个地方的问题,同时调整了组件样式使得表现一致。
  179. 优化了菜单管理的新增/编辑弹窗中的额外路由提示语,给登录页的Mock切换按钮添加了el-tooltip组件以便提示用户该功能的作用。
  180. 更新了模拟数据,添加了userDetail的字段,以便在无接口的环境下,个人中心也能展现完整的功能。
  181. 调整了个人中心页面-头像上传组件在移动端的展示方式,避免小屏幕下元素被遮挡的问题,调整了提示语,已同步至子应用。
  182. 修复了子应用列设置在移动端下无法拖动更换列表顺序的问题,原因是SortableJS的handle模式下未兼容移动端的touch事件,同时调整了SortableJS的挂载时机。
  183. 调整了主子应用登录页的右上方按钮的z-index层级,从9999改为999,避免遮挡顶部的message组件。
  184. 调整了子应用中的api/utils.ts文件,若传入URL中已经有http前缀则直接返回URL,同时优化条件嵌入可选链。
  185. 调整了主子应用的搜索组件逻辑,由于router/home.ts关联了平台的各种操作,无法进行修改,故在筛选结果时,主动去除title为首页的选项,避免搜索结果中出现两个工作台。
  186. 调整了主子应用的搜索组件和角色切换组件绑定的快捷启动按钮,搜索组件:主应用为shift+s,子应用为alt+s;角色切换组件:主应用为shift+r,子应用alt+r(仅独立运行时启用)。
  187. 给主子的搜索组件和角色绑定组件添加了唯一判定,若打开新弹窗时已经打开了其他弹窗,则会关闭其他弹窗,同时关闭时清空弹窗的输入值,避免重新打开时输入框仍保留了输入值。
  188. 调整了菜单管理中新增弹窗中的显示按钮默认为关闭的状态,同时当编辑时,若后端返回的meta字段中无showLink字段则自动添加并设置为true。(这个字段的意义在于主动设置为false则在侧边栏中隐藏该路由的入口,但是通过url输入是可以访问到的)。
  189. 调整了角色管理中的菜单权限的默认勾选情况,原来是通过default-checked-keys字段传入,但是后端返回的值存在半选中状态的节点,按照这样传入会出现半选中的节点的所有子节点都会被选中的问题。针对这个问题,使用循环,通过id使用getNodes获取到改节点的信息,仅在node.isLeaf为true的时候才通过setChecked设置该节点为选中状态。至此该问题已解决。
  190. 调整了菜单管理中新增弹窗的级联选择器的规则,当菜单为按钮时不允许在其下面添加子菜单。
  191. 调整了角色管理中的菜单权限树状选择器的选中规则,设置check-strictly父子严格不关联,使用自定义规则:当选中节点下有子节点,则自动勾选子节点,并且向上递归选中其父节点,其中页面节点可以独立勾选,并且联动所有父级中的目录节点,至此调整完成。
  192. 主子应用在刷新时主动调用接口告诉后端当前选中的角色是什么,便于后端底层权限控制。
  193. 主子应用添加了切换暗色模式的过渡效果,看起来更加高级?炫酷!使用了最新的chrome-api:view-transition,仅chrome118以上支持,若不支持则会直接切换。
  194. 调整了用户、角色、岗位管理的状态权限控制,和编辑共用权限标识,当无权限时自动禁用,或移除权限后点击操作后端也会进行拦截。
  195. 给部门管理的操作栏添加了新增按钮,可以快速再对应层级下创建部门。
  196. 修改nginx配置,在server层添加了port_in_redirect off;的配置项,当访问路径未在结尾添加/,则自动添加上,避免URL无法访问。
  197. 主子应用同时添加了关于页,里面有项目的介绍,以及使用到的插件列表。
  198. 修复了主子应用在开启了灰色/色弱模式时刷新页面后侧边栏变成白色的问题。
  199. 修复了移动端系统管理的页面点击聚焦模式后,提示语被遮挡的问题,目前无解,暂时更换提示语的展示方向避免遮挡。
  200. 修复了主子应用中内嵌iframe在刷新/新打开页面时有概率白屏的问题。原因是动态路由加载需要时间,js加载完成后若动态路由仍未完成加载则导致iframe的处理异常,故在2s后再进行一次处理保证页面能够加载出来。
posted @   脆皮鸡  阅读(1904)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示