@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.
- package/API.md +30 -27
- package/README.md +5 -4
- package/dist/.cache/route-chart-release/frontend/frame/public/js/ecStat.min.js +4 -0
- package/dist/.cache/route-chart-release/frontend/frame/public/js/echarts-wordcloud.min.js +4 -0
- package/dist/.cache/route-chart-release/frontend/frame/public/js/echarts.min.js +4 -0
- package/dist/_virtual/_plugin-vue_export-helper.js +10 -0
- package/dist/_virtual/jsencrypt.min.js +1 -1
- package/dist/assets/ecStat.min-BrTYPOXX.js +1 -0
- package/dist/assets/echarts-wordcloud.min-nWR4Hzny.js +3 -0
- package/dist/assets/echarts.min-DROS9E5X.js +45 -0
- package/dist/assets/role_select-DTqRlFNz.webp +0 -0
- package/dist/{_vendor → frontend/frame/_vendor}/.pnpm/jsencrypt@3.5.4/_vendor/jsencrypt/bin/jsencrypt.min.js +1 -1
- package/dist/src/Container.js +1 -0
- package/dist/src/RootApp.js +54 -0
- package/dist/src/api/config.js +1 -0
- package/dist/src/api/createHttp.js +7 -0
- package/dist/src/api/index.js +1 -0
- package/dist/src/app-layout.js +1 -0
- package/dist/src/app-ui-settings.js +49 -0
- package/dist/src/app.js +1 -0
- package/dist/src/axios.js +11 -15
- package/dist/src/capture-ref.js +1 -0
- package/dist/src/chart-runtime-assets.js +9 -0
- package/dist/src/components/draggable/index.js +1 -0
- package/dist/src/create-app.js +4 -6
- package/dist/src/directives/clickoutside.js +1 -0
- package/dist/src/directives/global.js +1 -0
- package/dist/src/index.js +3 -0
- package/dist/src/lazy-library.js +1 -0
- package/dist/src/loadComponent.js +3 -2
- package/dist/src/loadLibrary.js +1 -0
- package/dist/src/menu-route.js +12 -0
- package/dist/src/mixins/component.js +4 -0
- package/dist/src/mixins/custom-option.js +1 -0
- package/dist/src/mixins/el-locale.js +1 -0
- package/dist/src/mixins/global.js +1 -0
- package/dist/src/mixins/index.js +1 -0
- package/dist/src/mixins/methods-to-prototype.js +1 -0
- package/dist/src/mixins/optimized-global.js +1 -0
- package/dist/src/mixins/popper.js +1 -0
- package/dist/src/navigation-context.js +47 -0
- package/dist/src/navigation.js +44 -12
- package/dist/src/package-install.js +4 -2
- package/dist/src/plugins/element-plus.js +9 -8
- package/dist/src/plugins/i18n.js +1 -0
- package/dist/src/plugins/library-locale.js +1 -0
- package/dist/src/progress-bar.js +1 -0
- package/dist/src/public-api.js +5 -2
- package/dist/src/register-components.js +1 -0
- package/dist/src/remote-deps.js +1 -0
- package/dist/src/route-components.js +9 -0
- package/dist/src/router/config.js +8 -8
- package/dist/src/router/index.js +1 -0
- package/dist/src/router/public.js +1 -0
- package/dist/src/runtime-services.js +2 -1
- package/dist/src/runtime-utils/fieldFactory.js +1 -0
- package/dist/src/runtime-utils/meta.js +4 -0
- package/dist/src/runtime-utils/pdf.viewer.js +32 -15
- package/dist/src/runtime-utils/util.js +30 -5
- package/dist/src/shallow-same.js +1 -0
- package/dist/src/shared-packages.js +2 -3
- package/dist/src/store/actions.js +1 -0
- package/dist/src/store/create-store.js +1 -0
- package/dist/src/store/index.js +1 -0
- package/dist/src/store/lru.js +1 -0
- package/dist/src/store/modules/config.js +1 -0
- package/dist/src/store/modules/file.js +1 -0
- package/dist/src/store/modules/index.js +1 -0
- package/dist/src/store/modules/list.js +26 -3
- package/dist/src/store/modules/locale.js +1 -0
- package/dist/src/store/modules/meta.js +50 -7
- package/dist/src/store/modules/page.js +1 -0
- package/dist/src/store/modules/router.js +1 -0
- package/dist/src/store/modules/tabs.js +1 -0
- package/dist/src/store/modules/user.js +1 -0
- package/dist/src/style-presets.js +5 -4
- package/dist/src/ui-settings.js +91 -18
- package/dist/src/viewport.js +1 -0
- package/dist/src/views/App.js +48 -0
- package/dist/src/views/AppRoleSelect.js +233 -0
- package/dist/src/views/Error.js +210 -0
- package/dist/src/views/Module.js +173 -0
- package/dist/src/vue.bus.js +1 -0
- package/dist/src/vue2-cancel-token-compat.js +1 -0
- package/dist/src/vue2-remote-shim.js +1 -0
- package/dist/src/vue2-render-compat.js +1 -0
- package/dist/src/vue2-select-style-compat.js +1 -0
- package/dist/src/watermark.js +1 -0
- package/dist/src/xss.js +1 -0
- package/dist/src/z-index.js +1 -0
- package/dist/style.css +251 -0
- package/package.json +6 -5
- package/src/RootApp.vue +75 -0
- package/src/api/createHttp.js +7 -0
- package/src/api/index.js +47 -47
- package/src/app-ui-settings.js +31 -0
- package/src/axios.js +311 -318
- package/src/chart-runtime-assets.js +7 -0
- package/src/create-app.js +3 -7
- package/src/index.js +28 -28
- package/src/install.js +157 -157
- package/src/loadComponent.js +187 -187
- package/src/loadLibrary.js +99 -99
- package/src/menu-route.js +12 -1
- package/src/mixins/component.js +1464 -1461
- package/src/navigation-context.js +49 -0
- package/src/navigation.js +208 -176
- package/src/package-install.js +2 -1
- package/src/plugins/element-plus.js +302 -302
- package/src/plugins/frame.js +178 -178
- package/src/public-api.js +1 -0
- package/src/route-components.js +7 -0
- package/src/router/config.js +861 -864
- package/src/router/public.js +1 -1
- package/src/runtime-services.js +1 -1
- package/src/runtime-utils/fieldFactory.js +179 -179
- package/src/runtime-utils/meta.js +399 -378
- package/src/runtime-utils/pdf.viewer.js +672 -644
- package/src/runtime-utils/util.js +1357 -1330
- package/src/shared-packages.js +1 -3
- package/src/store/modules/config.js +351 -351
- package/src/store/modules/list.js +30 -3
- package/src/store/modules/locale.js +236 -236
- package/src/store/modules/meta.js +314 -265
- package/src/style-presets.js +4 -4
- package/src/ui-settings.js +84 -23
- package/src/views/App.vue +53 -0
- package/src/views/AppRoleSelect.vue +334 -0
- package/src/views/Error.vue +63 -0
- package/src/views/Module.vue +210 -0
- package/src/xss.js +26 -26
- package/types/app.d.ts +10 -10
- package/types/axios.d.ts +1 -1
- package/types/component-mixin.d.ts +1 -1
- package/types/field-factory.d.ts +1 -1
- package/types/global-mixin.d.ts +1 -1
- package/types/http.d.ts +1 -1
- package/types/index.d.ts +3 -0
- package/types/meta.d.ts +1 -1
- package/types/navigation.d.ts +21 -21
- package/types/pdf-viewer.d.ts +1 -1
- package/types/runtime.d.ts +13 -13
- package/types/store.d.ts +1 -1
- package/types/util.d.ts +2 -2
- /package/dist/{build → .cache/route-chart-release/frontend/frame/build}/stubs/empty-components.js +0 -0
- /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/element-icons.names.js +0 -0
- /package/dist/{src → .cache/route-chart-release/frontend/frame/src}/element-plus.lazy.js +0 -0
- /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
- /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.
|
|
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/
|
|
127
|
-
"@epxing/theme": "^5.3.0-beta.
|
|
128
|
-
"@epxing/
|
|
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",
|
package/src/RootApp.vue
ADDED
|
@@ -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>
|
package/src/api/createHttp.js
CHANGED
|
@@ -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
|
+
}
|