@epxing/core 5.3.0-beta.1 → 5.3.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (149) hide show
  1. package/API.md +30 -27
  2. package/README.md +5 -4
  3. package/dist/.cache/route-chart-release/frontend/frame/public/js/ecStat.min.js +4 -0
  4. package/dist/.cache/route-chart-release/frontend/frame/public/js/echarts-wordcloud.min.js +4 -0
  5. package/dist/.cache/route-chart-release/frontend/frame/public/js/echarts.min.js +4 -0
  6. package/dist/_virtual/_plugin-vue_export-helper.js +10 -0
  7. package/dist/_virtual/jsencrypt.min.js +1 -1
  8. package/dist/assets/ecStat.min-BrTYPOXX.js +1 -0
  9. package/dist/assets/echarts-wordcloud.min-nWR4Hzny.js +3 -0
  10. package/dist/assets/echarts.min-DROS9E5X.js +45 -0
  11. package/dist/assets/role_select-DTqRlFNz.webp +0 -0
  12. package/dist/{_vendor → frontend/frame/_vendor}/.pnpm/jsencrypt@3.5.4/_vendor/jsencrypt/bin/jsencrypt.min.js +1 -1
  13. package/dist/src/Container.js +1 -0
  14. package/dist/src/RootApp.js +54 -0
  15. package/dist/src/api/config.js +1 -0
  16. package/dist/src/api/createHttp.js +7 -0
  17. package/dist/src/api/index.js +1 -0
  18. package/dist/src/app-layout.js +1 -0
  19. package/dist/src/app-ui-settings.js +49 -0
  20. package/dist/src/app.js +1 -0
  21. package/dist/src/axios.js +11 -15
  22. package/dist/src/capture-ref.js +1 -0
  23. package/dist/src/chart-runtime-assets.js +9 -0
  24. package/dist/src/components/draggable/index.js +1 -0
  25. package/dist/src/create-app.js +4 -6
  26. package/dist/src/directives/clickoutside.js +1 -0
  27. package/dist/src/directives/global.js +1 -0
  28. package/dist/src/index.js +3 -0
  29. package/dist/src/lazy-library.js +1 -0
  30. package/dist/src/loadComponent.js +3 -2
  31. package/dist/src/loadLibrary.js +1 -0
  32. package/dist/src/menu-route.js +12 -0
  33. package/dist/src/mixins/component.js +4 -0
  34. package/dist/src/mixins/custom-option.js +1 -0
  35. package/dist/src/mixins/el-locale.js +1 -0
  36. package/dist/src/mixins/global.js +1 -0
  37. package/dist/src/mixins/index.js +1 -0
  38. package/dist/src/mixins/methods-to-prototype.js +1 -0
  39. package/dist/src/mixins/optimized-global.js +1 -0
  40. package/dist/src/mixins/popper.js +1 -0
  41. package/dist/src/navigation-context.js +47 -0
  42. package/dist/src/navigation.js +44 -12
  43. package/dist/src/package-install.js +4 -2
  44. package/dist/src/plugins/element-plus.js +9 -8
  45. package/dist/src/plugins/i18n.js +1 -0
  46. package/dist/src/plugins/library-locale.js +1 -0
  47. package/dist/src/progress-bar.js +1 -0
  48. package/dist/src/public-api.js +5 -2
  49. package/dist/src/register-components.js +1 -0
  50. package/dist/src/remote-deps.js +1 -0
  51. package/dist/src/route-components.js +9 -0
  52. package/dist/src/router/config.js +8 -8
  53. package/dist/src/router/index.js +1 -0
  54. package/dist/src/router/public.js +1 -0
  55. package/dist/src/runtime-services.js +2 -1
  56. package/dist/src/runtime-utils/fieldFactory.js +1 -0
  57. package/dist/src/runtime-utils/meta.js +4 -0
  58. package/dist/src/runtime-utils/pdf.viewer.js +32 -15
  59. package/dist/src/runtime-utils/util.js +30 -5
  60. package/dist/src/shallow-same.js +1 -0
  61. package/dist/src/shared-packages.js +2 -3
  62. package/dist/src/store/actions.js +1 -0
  63. package/dist/src/store/create-store.js +1 -0
  64. package/dist/src/store/index.js +1 -0
  65. package/dist/src/store/lru.js +1 -0
  66. package/dist/src/store/modules/config.js +1 -0
  67. package/dist/src/store/modules/file.js +1 -0
  68. package/dist/src/store/modules/index.js +1 -0
  69. package/dist/src/store/modules/list.js +26 -3
  70. package/dist/src/store/modules/locale.js +1 -0
  71. package/dist/src/store/modules/meta.js +50 -7
  72. package/dist/src/store/modules/page.js +1 -0
  73. package/dist/src/store/modules/router.js +1 -0
  74. package/dist/src/store/modules/tabs.js +1 -0
  75. package/dist/src/store/modules/user.js +1 -0
  76. package/dist/src/style-presets.js +5 -4
  77. package/dist/src/ui-settings.js +91 -18
  78. package/dist/src/viewport.js +1 -0
  79. package/dist/src/views/App.js +48 -0
  80. package/dist/src/views/AppRoleSelect.js +233 -0
  81. package/dist/src/views/Error.js +210 -0
  82. package/dist/src/views/Module.js +173 -0
  83. package/dist/src/vue.bus.js +1 -0
  84. package/dist/src/vue2-cancel-token-compat.js +1 -0
  85. package/dist/src/vue2-remote-shim.js +1 -0
  86. package/dist/src/vue2-render-compat.js +1 -0
  87. package/dist/src/vue2-select-style-compat.js +1 -0
  88. package/dist/src/watermark.js +1 -0
  89. package/dist/src/xss.js +1 -0
  90. package/dist/src/z-index.js +1 -0
  91. package/dist/style.css +251 -0
  92. package/package.json +6 -5
  93. package/src/RootApp.vue +75 -0
  94. package/src/api/createHttp.js +7 -0
  95. package/src/api/index.js +47 -47
  96. package/src/app-ui-settings.js +31 -0
  97. package/src/axios.js +311 -318
  98. package/src/chart-runtime-assets.js +7 -0
  99. package/src/create-app.js +3 -7
  100. package/src/index.js +28 -28
  101. package/src/install.js +157 -157
  102. package/src/loadComponent.js +187 -187
  103. package/src/loadLibrary.js +99 -99
  104. package/src/menu-route.js +12 -1
  105. package/src/mixins/component.js +1464 -1461
  106. package/src/navigation-context.js +49 -0
  107. package/src/navigation.js +208 -176
  108. package/src/package-install.js +2 -1
  109. package/src/plugins/element-plus.js +302 -302
  110. package/src/plugins/frame.js +178 -178
  111. package/src/public-api.js +1 -0
  112. package/src/route-components.js +7 -0
  113. package/src/router/config.js +861 -864
  114. package/src/router/public.js +1 -1
  115. package/src/runtime-services.js +1 -1
  116. package/src/runtime-utils/fieldFactory.js +179 -179
  117. package/src/runtime-utils/meta.js +399 -378
  118. package/src/runtime-utils/pdf.viewer.js +672 -644
  119. package/src/runtime-utils/util.js +1357 -1330
  120. package/src/shared-packages.js +1 -3
  121. package/src/store/modules/config.js +351 -351
  122. package/src/store/modules/list.js +30 -3
  123. package/src/store/modules/locale.js +236 -236
  124. package/src/store/modules/meta.js +314 -265
  125. package/src/style-presets.js +4 -4
  126. package/src/ui-settings.js +84 -23
  127. package/src/views/App.vue +53 -0
  128. package/src/views/AppRoleSelect.vue +334 -0
  129. package/src/views/Error.vue +63 -0
  130. package/src/views/Module.vue +210 -0
  131. package/src/xss.js +26 -26
  132. package/types/app.d.ts +10 -10
  133. package/types/axios.d.ts +1 -1
  134. package/types/component-mixin.d.ts +1 -1
  135. package/types/field-factory.d.ts +1 -1
  136. package/types/global-mixin.d.ts +1 -1
  137. package/types/http.d.ts +1 -1
  138. package/types/index.d.ts +3 -0
  139. package/types/meta.d.ts +1 -1
  140. package/types/navigation.d.ts +21 -21
  141. package/types/pdf-viewer.d.ts +1 -1
  142. package/types/runtime.d.ts +13 -13
  143. package/types/store.d.ts +1 -1
  144. package/types/util.d.ts +2 -2
  145. /package/dist/{build → .cache/route-chart-release/frontend/frame/build}/stubs/empty-components.js +0 -0
  146. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/element-icons.names.js +0 -0
  147. /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/element-plus.lazy.js +0 -0
  148. /package/dist/{_vendor → frontend/frame/_vendor}/.pnpm/element-plus@2.14.3_vue@3.5.39_typescript@5.9.3_/_vendor/element-plus/dist/locale/en.js +0 -0
  149. /package/dist/{_vendor → frontend/frame/_vendor}/.pnpm/element-plus@2.14.3_vue@3.5.39_typescript@5.9.3_/_vendor/element-plus/dist/locale/zh-cn.js +0 -0
package/dist/style.css CHANGED
@@ -2054,6 +2054,257 @@
2054
2054
  (sv-panel/hue-slider/alpha-slider/predefine)所用的 el-color-* 类名样式。
2055
2055
  element-ui 依赖整包退役后由本文件供样式。内容除本头注释外与上游逐字节一致。 */
2056
2056
  .el-color-predefine{display:-webkit-box;display:-ms-flexbox;display:flex;font-size:12px;margin-top:8px;width:280px}.el-color-predefine__colors{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-ms-flex:1;flex:1;-ms-flex-wrap:wrap;flex-wrap:wrap}.el-color-predefine__color-selector{margin:0 0 8px 8px;width:20px;height:20px;border-radius:4px;cursor:pointer}.el-color-predefine__color-selector:nth-child(10n+1){margin-left:0}.el-color-predefine__color-selector.selected{-webkit-box-shadow:0 0 3px 2px #409EFF;box-shadow:0 0 3px 2px #409EFF}.el-color-alpha-slider__thumb,.el-color-hue-slider__thumb{-webkit-box-shadow:0 0 2px rgba(0,0,0,.6);left:0;top:0;z-index:1}.el-color-predefine__color-selector>div{display:-webkit-box;display:-ms-flexbox;display:flex;height:100%;border-radius:3px}.el-color-predefine__color-selector.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-hue-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background-color:red;padding:0 2px}.el-color-hue-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to right,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%);height:100%}.el-color-hue-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6)}.el-color-hue-slider.is-vertical{width:12px;height:180px;padding:2px 0}.el-color-hue-slider.is-vertical .el-color-hue-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(red),color-stop(17%,#ff0),color-stop(33%,#0f0),color-stop(50%,#0ff),color-stop(67%,#00f),color-stop(83%,#f0f),to(red));background:linear-gradient(to bottom,red 0,#ff0 17%,#0f0 33%,#0ff 50%,#00f 67%,#f0f 83%,red 100%)}.el-color-hue-slider.is-vertical .el-color-hue-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-svpanel{position:relative;width:280px;height:180px}.el-color-svpanel__black,.el-color-svpanel__white{position:absolute;top:0;left:0;right:0;bottom:0}.el-color-svpanel__white{background:-webkit-gradient(linear,left top,right top,from(#fff),to(rgba(255,255,255,0)));background:linear-gradient(to right,#fff,rgba(255,255,255,0))}.el-color-svpanel__black{background:-webkit-gradient(linear,left bottom,left top,from(#000),to(rgba(0,0,0,0)));background:linear-gradient(to top,#000,rgba(0,0,0,0))}.el-color-svpanel__cursor{position:absolute}.el-color-svpanel__cursor>div{cursor:head;width:4px;height:4px;-webkit-box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);box-shadow:0 0 0 1.5px #fff,inset 0 0 1px 1px rgba(0,0,0,.3),0 0 1px 2px rgba(0,0,0,.4);border-radius:50%;-webkit-transform:translate(-2px,-2px);transform:translate(-2px,-2px)}.el-color-alpha-slider{position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;width:280px;height:12px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-alpha-slider__bar{position:relative;background:-webkit-gradient(linear,left top,right top,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to right,rgba(255,255,255,0) 0,#fff 100%);height:100%}.el-color-alpha-slider__thumb{position:absolute;cursor:pointer;-webkit-box-sizing:border-box;box-sizing:border-box;width:4px;height:100%;border-radius:1px;background:#fff;border:1px solid #f0f0f0;box-shadow:0 0 2px rgba(0,0,0,.6)}.el-color-alpha-slider.is-vertical{width:20px;height:180px}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__bar{background:-webkit-gradient(linear,left top,left bottom,from(rgba(255,255,255,0)),to(white));background:linear-gradient(to bottom,rgba(255,255,255,0) 0,#fff 100%)}.el-color-alpha-slider.is-vertical .el-color-alpha-slider__thumb{left:0;top:0;width:100%;height:4px}.el-color-dropdown{width:300px}.el-color-dropdown__main-wrapper{margin-bottom:6px}.el-color-dropdown__main-wrapper::after{content:"";display:table;clear:both}.el-color-dropdown__btns{margin-top:6px;text-align:right}.el-color-dropdown__value{float:left;line-height:26px;font-size:12px;color:#000;width:160px}.el-color-dropdown__btn{border:1px solid #dcdcdc;color:#333;line-height:24px;border-radius:2px;padding:0 20px;cursor:pointer;background-color:transparent;outline:0;font-size:12px}.el-color-dropdown__btn[disabled]{color:#ccc;cursor:not-allowed}.el-color-dropdown__btn:hover{color:#409EFF;border-color:#409EFF}.el-color-dropdown__link-btn{cursor:pointer;color:#409EFF;text-decoration:none;padding:15px;font-size:12px}.el-color-dropdown__link-btn:hover{color:tint(#409EFF,20%)}.el-color-picker{display:inline-block;position:relative;line-height:normal;height:40px}.el-color-picker.is-disabled .el-color-picker__trigger{cursor:not-allowed}.el-color-picker--medium{height:36px}.el-color-picker--medium .el-color-picker__trigger{height:36px;width:36px}.el-color-picker--medium .el-color-picker__mask{height:34px;width:34px}.el-color-picker--small{height:32px}.el-color-picker--small .el-color-picker__trigger{height:32px;width:32px}.el-color-picker--small .el-color-picker__mask{height:30px;width:30px}.el-color-picker--small .el-color-picker__empty,.el-color-picker--small .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker--mini{height:28px}.el-color-picker--mini .el-color-picker__trigger{height:28px;width:28px}.el-color-picker--mini .el-color-picker__mask{height:26px;width:26px}.el-color-picker--mini .el-color-picker__empty,.el-color-picker--mini .el-color-picker__icon{-webkit-transform:translate3d(-50%,-50%,0) scale(.8);transform:translate3d(-50%,-50%,0) scale(.8)}.el-color-picker__mask{height:38px;width:38px;border-radius:4px;position:absolute;top:1px;left:1px;z-index:1;cursor:not-allowed;background-color:rgba(255,255,255,.7)}.el-color-picker__trigger{display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;height:40px;width:40px;padding:4px;border:1px solid #e6e6e6;border-radius:4px;font-size:0;position:relative;cursor:pointer}.el-color-picker__color{position:relative;display:block;-webkit-box-sizing:border-box;box-sizing:border-box;border:1px solid #999;border-radius:2px;width:100%;height:100%;text-align:center}.el-color-picker__color.is-alpha{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAIAAADZF8uwAAAAGUlEQVQYV2M4gwH+YwCGIasIUwhT25BVBADtzYNYrHvv4gAAAABJRU5ErkJggg==)}.el-color-picker__color-inner{position:absolute;left:0;top:0;right:0;bottom:0}.el-color-picker__empty,.el-color-picker__icon{top:50%;left:50%;font-size:12px;position:absolute}.el-color-picker__empty{color:#999;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.el-color-picker__icon{display:inline-block;width:100%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0);color:#FFF;text-align:center}.el-color-picker__panel{position:absolute;z-index:10;padding:6px;-webkit-box-sizing:content-box;box-sizing:content-box;background-color:#FFF;border:1px solid #EBEEF5;border-radius:4px;-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}
2057
+ .tab-bar[data-v-80523e3c] {
2058
+ position: static;
2059
+ border-top: 1px solid #f8f8fb;
2060
+ }
2061
+
2062
+ .module[data-v-4d3fb177] {
2063
+ width: 100%;
2064
+ height: 100%;
2065
+ padding: 16px;
2066
+ box-sizing: border-box;
2067
+ position: relative;
2068
+ }
2069
+ @media only screen and (max-width: 992px) {
2070
+ .module[data-v-4d3fb177]{
2071
+ padding: 0;
2072
+ }
2073
+ }
2074
+
2075
+ /* BEM support Func
2076
+ -------------------------- */
2077
+ /* 53a8ff */
2078
+ /* 66b1ff */
2079
+ /* 79bbff */
2080
+ /* 8cc5ff */
2081
+ /* a0cfff */
2082
+ /* b3d8ff */
2083
+ /* c6e2ff */
2084
+ /* d9ecff */
2085
+ /* ecf5ff */
2086
+ /* 链接颜色
2087
+ -------------------------- */
2088
+ /* Border
2089
+ -------------------------- */
2090
+ /*****BEM*********/
2091
+ /* 主题色 mixin —— 已塌缩为 CSS 变量单条规则
2092
+ 原实现每个 mixin 经 @each 展开 12 套 [data-theme=x] 规则,346 个调用点 ≈4500 条规则,
2093
+ 是组件库 CSS 体积大头。现依赖上方每套主题的 --color-primary(RGB 三元组):
2094
+ 透明度走 rgba(var(--color-primary), a);混合色走原生 color-mix(同 EP tokens 先例,
2095
+ 平台 Chrome 支持)。签名不变,346 个调用点零改动。
2096
+ -------------------------- */
2097
+ /* Break-points
2098
+ -------------------------- */
2099
+ /* Scrollbar
2100
+ -------------------------- */
2101
+ /* Placeholder
2102
+ -------------------------- */
2103
+ /* BEM
2104
+ -------------------------- */
2105
+ .role-select[data-v-da37146c] {
2106
+ height: 100%;
2107
+ background: #F1F3F7;
2108
+ }
2109
+ .role-select__bg[data-v-da37146c] {
2110
+ height: 50%;
2111
+ background: url("./assets/role_select-DTqRlFNz.webp") no-repeat center;
2112
+ background-size: cover;
2113
+ }
2114
+ .select__modal[data-v-da37146c] {
2115
+ width: 1200px;
2116
+ height: 520px;
2117
+ overflow: auto;
2118
+ box-sizing: border-box;
2119
+ padding: 30px;
2120
+ background: var(--epx-bg-card);
2121
+ position: relative;
2122
+ left: 50%;
2123
+ top: -260px;
2124
+ margin-left: -600px;
2125
+ }
2126
+ .app__prefix[data-v-da37146c] {
2127
+ float: left;
2128
+ width: 56px;
2129
+ height: 56px;
2130
+ border-radius: 50%;
2131
+ background-color: rgba(var(--color-primary), 1);
2132
+ margin-right: 20px;
2133
+ text-align: center;
2134
+ }
2135
+ .app__prefix i[data-v-da37146c] {
2136
+ font-size: 24px;
2137
+ color: #fff;
2138
+ line-height: 56px;
2139
+ }
2140
+ .app__name[data-v-da37146c] {
2141
+ font-size: var(--epx-font-size-xl);
2142
+ line-height: 56px;
2143
+ }
2144
+ .role__title[data-v-da37146c] {
2145
+ font-size: 18px;
2146
+ line-height: 48px;
2147
+ text-align: center;
2148
+ position: relative;
2149
+ }
2150
+ .role__title[data-v-da37146c]::after {
2151
+ content: "";
2152
+ display: block;
2153
+ position: absolute;
2154
+ left: 50%;
2155
+ bottom: 0;
2156
+ margin-left: -38px;
2157
+ width: 76px;
2158
+ height: 2px;
2159
+ background: #333333;
2160
+ }
2161
+ .radio-group[data-v-da37146c] {
2162
+ width: 100%;
2163
+ }
2164
+ .role__list[data-v-da37146c] {
2165
+ display: flex;
2166
+ justify-content: center;
2167
+ flex-wrap: wrap;
2168
+ margin-top: 48px;
2169
+ }
2170
+ .role__item[data-v-da37146c] {
2171
+ width: 200px;
2172
+ height: 220px;
2173
+ display: flex;
2174
+ flex-direction: column;
2175
+ align-items: center;
2176
+ justify-content: center;
2177
+ margin: 0 12px;
2178
+ cursor: pointer;
2179
+ }
2180
+ .role__item[data-v-da37146c]:hover {
2181
+ box-shadow: 0px 1px 16px 2px rgba(0, 0, 0, 0.1);
2182
+ }
2183
+ .role__item:hover .role__opera .radio[data-v-da37146c] {
2184
+ display: block;
2185
+ }
2186
+ .role__prefix[data-v-da37146c] {
2187
+ display: block;
2188
+ width: 82px;
2189
+ height: 82px;
2190
+ border-radius: 50%;
2191
+ background-color: rgba(var(--color-primary), 1);
2192
+ text-align: center;
2193
+ }
2194
+ .role__prefix i[data-v-da37146c] {
2195
+ font-size: 36px;
2196
+ color: #fff;
2197
+ line-height: 82px;
2198
+ }
2199
+ .role__name[data-v-da37146c] {
2200
+ display: inline-block;
2201
+ font-size: var(--epx-font-size-l);
2202
+ padding: 20px 0;
2203
+ }
2204
+ .role__opera[data-v-da37146c] {
2205
+ display: block;
2206
+ height: 20px;
2207
+ }
2208
+ .role__opera .radio[data-v-da37146c] {
2209
+ display: none;
2210
+ }
2211
+ .no-role[data-v-da37146c] {
2212
+ margin-top: 60px;
2213
+ text-align: center;
2214
+ }
2215
+ .no-role > p[data-v-da37146c] {
2216
+ font-size: 30px;
2217
+ margin-bottom: 40px;
2218
+ color: red;
2219
+ }
2220
+ .m-role-select .select__modal[data-v-da37146c] {
2221
+ width: 100%;
2222
+ height: 100%;
2223
+ left: 0;
2224
+ margin-left: 0;
2225
+ padding: 10px 0;
2226
+ }
2227
+ .m-role-select .app__title[data-v-da37146c] {
2228
+ display: none;
2229
+ }
2230
+ .m-role-select .role__list[data-v-da37146c] {
2231
+ margin-top: 24px;
2232
+ justify-content: flex-start;
2233
+ }
2234
+ .m-role-select .role__item[data-v-da37146c] {
2235
+ width: calc(33.3% - 24px);
2236
+ height: auto;
2237
+ margin: 0 12px;
2238
+ }
2239
+ .m-role-select .role__prefix[data-v-da37146c] {
2240
+ width: 48px;
2241
+ height: 48px;
2242
+ }
2243
+ .m-role-select .role__prefix i[data-v-da37146c] {
2244
+ font-size: 24px;
2245
+ line-height: 48px;
2246
+ }
2247
+ .m-role-select .role__name[data-v-da37146c] {
2248
+ font-size: var(--epx-font-size-base);
2249
+ padding: 10px 0;
2250
+ }
2251
+ /* BEM support Func
2252
+ -------------------------- */
2253
+ /* 53a8ff */
2254
+ /* 66b1ff */
2255
+ /* 79bbff */
2256
+ /* 8cc5ff */
2257
+ /* a0cfff */
2258
+ /* b3d8ff */
2259
+ /* c6e2ff */
2260
+ /* d9ecff */
2261
+ /* ecf5ff */
2262
+ /* 链接颜色
2263
+ -------------------------- */
2264
+ /* Border
2265
+ -------------------------- */
2266
+ /*****BEM*********/
2267
+ /* 主题色 mixin —— 已塌缩为 CSS 变量单条规则
2268
+ 原实现每个 mixin 经 @each 展开 12 套 [data-theme=x] 规则,346 个调用点 ≈4500 条规则,
2269
+ 是组件库 CSS 体积大头。现依赖上方每套主题的 --color-primary(RGB 三元组):
2270
+ 透明度走 rgba(var(--color-primary), a);混合色走原生 color-mix(同 EP tokens 先例,
2271
+ 平台 Chrome 支持)。签名不变,346 个调用点零改动。
2272
+ -------------------------- */
2273
+ /* Break-points
2274
+ -------------------------- */
2275
+ /* Scrollbar
2276
+ -------------------------- */
2277
+ /* Placeholder
2278
+ -------------------------- */
2279
+ /* BEM
2280
+ -------------------------- */
2281
+ .error[data-v-fc66f10d] {
2282
+ font-size: 140px;
2283
+ text-align: center;
2284
+ line-height: 1;
2285
+ position: absolute;
2286
+ top: 50%;
2287
+ width: 100%;
2288
+ margin-top: -150px;
2289
+ }
2290
+ .error p[data-v-fc66f10d] {
2291
+ font-size: 18px;
2292
+ color: var(--epx-text);
2293
+ margin-top: 30px;
2294
+ }
2295
+ .error a[data-v-fc66f10d] {
2296
+ cursor: pointer;
2297
+ }
2298
+ .off[data-v-fc66f10d] {
2299
+ margin-top: -170px;
2300
+ }
2301
+ .off svg[data-v-fc66f10d] {
2302
+ width: 300px;
2303
+ height: 300px;
2304
+ }
2305
+ .off p[data-v-fc66f10d] {
2306
+ margin-top: -10px;
2307
+ }
2057
2308
  /* BEM support Func
2058
2309
  -------------------------- */
2059
2310
  /* 53a8ff */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@epxing/core",
3
- "version": "5.3.0-beta.1",
3
+ "version": "5.3.0-beta.3",
4
4
  "description": "平台内核:store/router/api/axios/mixins/plugins/draggable(不含平台安装器 install/frame——那是 epx-frame 聚合包的事)",
5
5
  "type": "module",
6
6
  "exports": {
@@ -123,9 +123,9 @@
123
123
  "xss": "^1.0.14",
124
124
  "dayjs": "^1.11.21",
125
125
  "jsencrypt": "^3.1.0",
126
- "@epxing/utils": "^5.3.0-beta.1",
127
- "@epxing/theme": "^5.3.0-beta.1",
128
- "@epxing/icons": "^5.3.0-beta.1"
126
+ "@epxing/icons": "^5.3.0-beta.3",
127
+ "@epxing/theme": "^5.3.0-beta.3",
128
+ "@epxing/utils": "^5.3.0-beta.3"
129
129
  },
130
130
  "peerDependencies": {
131
131
  "element-plus": "2.14.3",
@@ -145,7 +145,8 @@
145
145
  "./dist/src/store/**",
146
146
  "./dist/src/mixins/**",
147
147
  "./dist/src/runtime-utils/util.js",
148
- "./dist/src/runtime-services.js"
148
+ "./dist/src/runtime-services.js",
149
+ "./dist/**/*.js"
149
150
  ],
150
151
  "publishConfig": {
151
152
  "access": "public",
@@ -0,0 +1,75 @@
1
+ <template>
2
+ <!-- T27:Vue3 的 app.mount('#app') 渲染进挂载点内部(Vue2 的 $mount 是替换),
3
+ 根若也 id="app" 会与 index.html 挂载点形成嵌套重复 id(无效 HTML + E2E 选择器歧义)。
4
+ 改 class;#app 布局样式仍在挂载点,本根 100% 填充。 -->
5
+ <div class="epx-app-root">
6
+ <!-- refresh:false 的路由族用归一名作 key:app1↔appMenu、hall↔hallMenu 共 key,菜单间导航不重挂整个 App -->
7
+ <router-view :key="routeViewKey"></router-view>
8
+ </div>
9
+ </template>
10
+
11
+ <script>
12
+ import { migrateLegacyTheme, initTheme } from '@epxing/core/src/ui-settings'
13
+ import storage from '@epxing/utils/src/storage'
14
+
15
+ export default {
16
+ name: 'epx-root-app',
17
+ computed: {
18
+ routeViewKey () {
19
+ const route = this.$route
20
+ // 配置中心菜单切换复用外壳;切换客户或系统时仍重新初始化。
21
+ if (route.name === 'system') {
22
+ return JSON.stringify([route.name, route.params.client, route.params.system])
23
+ }
24
+ // Wiki 在同一空间内通过路由 watcher 换正文,不能按文件路径重建目录和站点。
25
+ // 租户、系统或空间改变时仍需重新初始化,避免沿用上一空间的数据。
26
+ if (route.name === 'wikiSite' || route.name === 'wikiView') {
27
+ return JSON.stringify([route.name, route.params.client, route.params.system, route.params.wiki || route.query.w])
28
+ }
29
+ return route.meta && route.meta.refresh !== false ? route.path : this.routeKeyName
30
+ },
31
+ // b17a2b119 把根 key 从 $route.name 改成了本计算属性,但**没把它加上**——
32
+ // 于是 refresh:false 的路由 key 恒为 undefined,每次渲染刷一条
33
+ // [Vue warn]: Property "routeKeyName" was accessed during render but is not defined。
34
+ // 实际效果是「所有 refresh:false 路由共用一个空 key」,比设计更粗:
35
+ // help / client / defaultApp 也跟着不重挂了。这里补回该提交的原意——
36
+ // 只在菜单族内归一,其余仍用 $route.name(即改动前的行为)。
37
+ routeKeyName () {
38
+ const name = this.$route.name
39
+ if (name === 'app1' || name === 'appMenu') return 'app'
40
+ if (name === 'hall' || name === 'hallMenu') return 'hall'
41
+ return name
42
+ }
43
+ },
44
+ created () {
45
+ // 引导期主题:登录页 / 角色选择页这些**在 AppIndex 之前**的页面也要吃个性化设置。
46
+ //
47
+ // 老实现是 setAttribute('data-theme', localStorage.epx_frame_theme) + 手动 toggle('dark'),
48
+ // 只认那个老单值键。而设置抽屉的主题色存在 epx_frame_ui_settings.themeColor、只由
49
+ // initTheme()/applyTheme() 消费,且 initTheme() 当时**只在 AppIndex.setTheme() 里被调起**
50
+ // ——登录路由是顶层路由、根本不渲染 AppIndex ⇒ 抽屉里选的主题色在登录页完全不生效
51
+ // (暗色 / 风格四轴 / 灰度色弱同理)。另外老键缺省时那次 setAttribute 会把 data-theme 写成
52
+ // 字符串 "null",匹配不到任何主题块。
53
+ //
54
+ // 顺序:先把老单值键迁进 ui-settings(applyAppDefaults 语义 = 只兜底、不盖用户选择),
55
+ // 再由 initTheme() 统一应用主题色 / 暗色 / 风格四轴 / 灰度色弱,并注册后续变更监听。
56
+ // 引导期查不了 SKIN_COLOR(未登录),自定义肤色的取色仍留给 AppIndex.setTheme()。
57
+ // 读取用 storage.get(sessionStorage 优先、localStorage 兜底,隐私模式/禁用存储时不抛错)而非裸 localStorage。
58
+ migrateLegacyTheme(storage.get('epx_frame_theme'))
59
+ initTheme()
60
+ },
61
+ mounted () {
62
+ const that = this
63
+
64
+ window.addEventListener('resize', that.$_.debounce(() => {
65
+ that.$store.commit('GET_VIEWPORT')
66
+ }, 200))
67
+ }
68
+ }
69
+ </script>
70
+ <style scoped>
71
+ .tab-bar {
72
+ position: static;
73
+ border-top: 1px solid #f8f8fb;
74
+ }
75
+ </style>
@@ -186,6 +186,13 @@ export default (config) => {
186
186
  if (meta.serverCode && !options.domainContext) {
187
187
  projectName = meta.serverCode
188
188
  }
189
+ // 仅服务大厅跨系统访问时按对象元数据归属设置所属系统,业务系统保持当前上下文
190
+ if (router.currentRoute.value.name === 'hall') {
191
+ const { clientCode, systemCode } = meta
192
+ if (clientCode) clientId = clientCode
193
+ if (systemCode) sysId = systemCode
194
+ if (entityId.includes('@system@')) entityId = `${entityId.split('@')[0]}@${sysId}@${clientId}`
195
+ }
189
196
  } else if (router.currentRoute.value.name === 'hall') {
190
197
  const isSystemEntity = entityId.includes('@system@') || entityId.length === 32
191
198
  if (action !== 'getMeta' && action !== 'getSystemInfo' && isSystemEntity) {
package/src/api/index.js CHANGED
@@ -1,47 +1,47 @@
1
- import { getConfiguredRuntimeService } from '../runtime-services'
2
- import axios from '@epxing/core/src/axios'
3
- import api from './config'
4
- import createHttp from './createHttp'
5
- class Http {
6
- constructor () {
7
- this.init()
8
- }
9
-
10
- init () {
11
- this.mountAxios()
12
- this.createApi()
13
- }
14
-
15
- // 挂载axios方法
16
- mountAxios () {
17
- this._axios = axios
18
- this._get = axios.get
19
- this._post = axios.post
20
- this._request = axios.request
21
- }
22
-
23
- // 创建api
24
- createApi () {
25
- this._api = api
26
- for (const key in api) {
27
- this[key] = createHttp(api[key])
28
- }
29
- }
30
- }
31
-
32
- const http = new Http()
33
- const bindings = new WeakMap()
34
- const client = new Proxy(http, {
35
- get (target, key) {
36
- const configured = getConfiguredRuntimeService('http')
37
- const delegate = configured && configured !== client ? configured : target
38
- const value = delegate[key]
39
- // 默认客户端保持原有方法/axios 实例身份;注入的对象方法绑定到其真实接收者。
40
- if (delegate === target || typeof value !== 'function' || key === '_axios') return value
41
- let cache = bindings.get(delegate)
42
- if (!cache) { cache = new WeakMap(); bindings.set(delegate, cache) }
43
- if (!cache.has(value)) cache.set(value, value.bind(delegate))
44
- return cache.get(value)
45
- }
46
- })
47
- export default client
1
+ import { getConfiguredRuntimeService } from '../runtime-services'
2
+ import axios from '@epxing/core/src/axios'
3
+ import api from './config'
4
+ import createHttp from './createHttp'
5
+ class Http {
6
+ constructor () {
7
+ this.init()
8
+ }
9
+
10
+ init () {
11
+ this.mountAxios()
12
+ this.createApi()
13
+ }
14
+
15
+ // 挂载axios方法
16
+ mountAxios () {
17
+ this._axios = axios
18
+ this._get = axios.get
19
+ this._post = axios.post
20
+ this._request = axios.request
21
+ }
22
+
23
+ // 创建api
24
+ createApi () {
25
+ this._api = api
26
+ for (const key in api) {
27
+ this[key] = createHttp(api[key])
28
+ }
29
+ }
30
+ }
31
+
32
+ const http = new Http()
33
+ const bindings = new WeakMap()
34
+ const client = new Proxy(http, {
35
+ get (target, key) {
36
+ const configured = getConfiguredRuntimeService('http')
37
+ const delegate = configured && configured !== client ? configured : target
38
+ const value = delegate[key]
39
+ // 默认客户端保持原有方法/axios 实例身份;注入的对象方法绑定到其真实接收者。
40
+ if (delegate === target || typeof value !== 'function' || key === '_axios') return value
41
+ let cache = bindings.get(delegate)
42
+ if (!cache) { cache = new WeakMap(); bindings.set(delegate, cache) }
43
+ if (!cache.has(value)) cache.set(value, value.bind(delegate))
44
+ return cache.get(value)
45
+ }
46
+ })
47
+ export default client
@@ -0,0 +1,31 @@
1
+ import { DEFAULTS, LEGACY_RADIUS_AXIS, LEGACY_DENSITY_AXIS } from './ui-settings'
2
+
3
+ // 应用默认只接管界面选项,辅助显示、水印和抽屉展开态仍属于个人设置。
4
+ export const APP_UI_KEYS = [
5
+ 'themeMode', 'themeColor', 'customTheme', 'menuAccordion', 'showLogo', 'breadcrumb', 'sidebarDark',
6
+ 'styleRadius', 'styleFont', 'styleDensity', 'styleElevation', 'componentSize',
7
+ 'tabsPosition', 'tabsStyle', 'tabsKeepAlive', 'pageAnim', 'progressBar', 'pageLoading'
8
+ ]
9
+
10
+ export function resolveAppUiDefaults (config = {}, pageConfig = {}) {
11
+ const legacy = { ...pageConfig, ...config }
12
+ const result = {}
13
+ for (const key of APP_UI_KEYS) {
14
+ if (legacy[key] !== undefined && legacy[key] !== null) result[key] = legacy[key]
15
+ }
16
+ if (result.styleRadius === undefined && legacy.borderRadius !== undefined) {
17
+ result.styleRadius = LEGACY_RADIUS_AXIS[legacy.borderRadius] || ''
18
+ }
19
+ if (result.styleDensity === undefined && legacy.componentMargin !== undefined) {
20
+ result.styleDensity = LEGACY_DENSITY_AXIS[legacy.componentMargin] || ''
21
+ }
22
+ for (const key of APP_UI_KEYS) {
23
+ if (config.uiDefaults?.[key] !== undefined && config.uiDefaults[key] !== null) result[key] = config.uiDefaults[key]
24
+ }
25
+ return result
26
+ }
27
+
28
+ export function createAppUiDraft (config = {}) {
29
+ const defaults = resolveAppUiDefaults(config)
30
+ return Object.fromEntries(APP_UI_KEYS.map(key => [key, defaults[key] ?? DEFAULTS[key]]))
31
+ }