@euflyapp/one-vue3 0.1.0

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/.eslintrc.cjs ADDED
@@ -0,0 +1,24 @@
1
+ module.exports = {
2
+ root: true,
3
+ env: {
4
+ browser: true,
5
+ es2021: true,
6
+ node: true
7
+ },
8
+ extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:vue/vue3-essential'],
9
+ parserOptions: {
10
+ ecmaVersion: 'latest',
11
+ parser: '@typescript-eslint/parser',
12
+ sourceType: 'module'
13
+ },
14
+ plugins: ['@typescript-eslint', 'vue'],
15
+ rules: {
16
+ 'no-var': 'error', // 禁止使用 var
17
+ 'no-mixed-spaces-and-tabs': 'error', // 不能空格与tab混用
18
+ quotes: [2, 'single'], // 使用单引号
19
+ 'vue/multi-word-component-names': 'off', // 驼峰警告
20
+ '@typescript-eslint/no-explicit-any': 'off', // 使用any类型警告
21
+ '@typescript-eslint/no-unused-vars': 'off', // 关闭检测未使用的变量,交由tsconfig.json中noUnusedLocals决定
22
+ 'no-undef': 0 // 不能有未定义的变量
23
+ }
24
+ };
@@ -0,0 +1,18 @@
1
+ module.exports = {
2
+ printWidth: 120, // 单行输出(不折行)的(最大)长度
3
+ tabWidth: 2, // 每个缩进级别的空格数
4
+ tabs: false, // 使用制表符 (tab) 缩进行而不是空格 (space)。
5
+ semi: true, // 是否在语句末尾打印分号
6
+ singleQuote: true, // 是否使用单引号
7
+ quoteProps: "as-needed", // 仅在需要时在对象属性周围添加引号
8
+ jsxSingleQuote: false, // jsx 不使用单引号,而使用双引号
9
+ trailingComma: "none", // 去除对象最末尾元素跟随的逗号
10
+ bracketSpacing: true, // 是否在对象属性添加空格
11
+ jsxBracketSameLine: true, // 将 > 多行 JSX 元素放在最后一行的末尾,而不是单独放在下一行(不适用于自闭元素),默认false,这里选择>不另起一行
12
+ arrowParens: "always", // 箭头函数,只有一个参数的时候,也需要括号
13
+ proseWrap: "always", // 当超出print width(上面有这个参数)时就折行
14
+ htmlWhitespaceSensitivity: "ignore", // 指定 HTML 文件的全局空白区域敏感度, "ignore" - 空格被认为是不敏感的
15
+ vueIndentScriptAndStyle: false, // 在VUE文件中不要缩进脚本和样式标记
16
+ stylelintIntegration: true,
17
+ endOfLine: "auto",
18
+ };
package/CHANGELOG.md ADDED
@@ -0,0 +1,69 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog).
9
+
10
+ ## [v0.1.0](https://gitee.com/zsjqwe/one-vue3-vuex/compare/v0.0.20...v0.1.0)
11
+
12
+ ### Commits
13
+
14
+ - feat: 欧翔one公共包vue3版本 [`6be75d7`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/6be75d7a435bbdc0d2e9547ff62be4f1cb4152b6)
15
+
16
+ ## [v0.0.20](https://gitee.com/zsjqwe/one-vue3-vuex/compare/v0.0.19...v0.0.20) - 2026-02-11
17
+
18
+ ### Commits
19
+
20
+ - feat: sideBar插槽添加 [`7951060`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/79510605258f3e1845647aa4c6ef8348d8784d49)
21
+
22
+ ## [v0.0.19](https://gitee.com/zsjqwe/one-vue3-vuex/compare/v0.0.18...v0.0.19) - 2025-11-03
23
+
24
+ ### Commits
25
+
26
+ - feat: add sideBar slot [`572e2c0`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/572e2c0e6630c6a3c32d59406c00380b1e63f7de)
27
+
28
+ ## [v0.0.18](https://gitee.com/zsjqwe/one-vue3-vuex/compare/v0.0.14...v0.0.18) - 2025-10-27
29
+
30
+ ### Commits
31
+
32
+ - aa [`e642784`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/e642784b0190c9e6d312553cecd659938fc74b83)
33
+ - feat [`a19f86f`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/a19f86f11212b5e2b14c11c4e06ab9f5d973639f)
34
+ - a [`8b39a6a`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/8b39a6adbb7ab0b5051ab1fdf283b1f643887246)
35
+ - feat: style change [`be7c5c3`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/be7c5c313f37e5629eefdf94bf9156e942b21cf8)
36
+
37
+ ## [v0.0.14](https://gitee.com/zsjqwe/one-vue3-vuex/compare/v0.0.13...v0.0.14) - 2025-09-05
38
+
39
+ ### Commits
40
+
41
+ - a [`2c61000`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/2c61000b52e778fe850f4252583ca7acdeaedff2)
42
+
43
+ ## [v0.0.13](https://gitee.com/zsjqwe/one-vue3-vuex/compare/v0.0.12...v0.0.13) - 2025-09-05
44
+
45
+ ### Commits
46
+
47
+ - a [`14f4618`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/14f4618ab0fdd054392a85896d1b790264d4472c)
48
+
49
+ ## [v0.0.12](https://gitee.com/zsjqwe/one-vue3-vuex/compare/v0.0.11...v0.0.12) - 2025-09-04
50
+
51
+ ### Commits
52
+
53
+ - cod [`097fe6b`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/097fe6b56a5f5a35cc08c28ad7a76443930c2dec)
54
+
55
+ ## v0.0.11 - 2025-09-04
56
+
57
+ ### Commits
58
+
59
+ - feat: project init [`cce9607`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/cce9607244394410930e12080b63fba00c394fd2)
60
+ - a [`0b9b5d6`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/0b9b5d6304195ca420378aeeb2ae4fa8b511337a)
61
+ - a [`b465262`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/b46526242c668048d2f9ae5802dded2b6719cf0a)
62
+ - feat: a [`1b44838`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/1b448386cfdde8e1cd3bb124c26cb8dfb5304eb4)
63
+ - a [`5279424`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/5279424e25d4de23413e376587076d2f63c4f07a)
64
+ - a [`031ae28`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/031ae28d6fb9d162ed73a5b9864f9dd301d36738)
65
+ - a [`6fbf6ff`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/6fbf6ff5582354a64b31a45a99d26a609f4115fa)
66
+ - feat: a [`44c3188`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/44c3188d0283c0dcc1a5ce5886445f58f04b1d40)
67
+ - code [`6abe1a8`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/6abe1a8d9fa12f0fb3bd04e12241bae3f8fb5ade)
68
+ - a [`c55066f`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/c55066fd17d2bdee4d26c69818e471d5710aba1b)
69
+ - a [`77b4417`](https://gitee.com/zsjqwe/one-vue3-vuex/commit/77b4417b58f7c8060163bdfe4d75997cfc90cf4b)
package/README.md ADDED
@@ -0,0 +1,61 @@
1
+ # one-vue3
2
+
3
+ ### 如何使用
4
+ ***
5
+ 在项目中的main.ts中:
6
+ ```vue
7
+ import { createApp } from 'vue';
8
+ import App from './App.vue';
9
+ import FtlOne from '@ftlab/one-vue3';
10
+ import '@ftlab/one-vue3/dist/style.css';
11
+ import '@ftlab/one-vue3/assets/fontAwesome/css/font-awesome.css';
12
+
13
+ const app=createApp(App);
14
+ app.use(FtlOne); // 注册全局组件
15
+ ```
16
+ ### 侧边栏主题色配置
17
+ ***
18
+ 在项目中新建一个scss文件,填写如下内容,在全局中引入
19
+ ```sass
20
+ @forward 'node_modules/@ftlab/one-vue3/assets/css/index.scss' with (
21
+ $color: #fff, /* 侧边栏菜单字体颜色 */
22
+ $--color-header: #2e45ad, /* 侧边栏菜单交互背景色 */
23
+ $--color-text: #0026d5, /* 侧边栏二级子菜单选中字体颜色 */
24
+ $bg: #00265d, /* 侧边栏菜单背景色 */
25
+ $content-bg: #94a5c1 /* 侧边栏菜单二级子菜单背景色 */
26
+ );
27
+
28
+ ```
29
+ ### 提供的全局组件
30
+ ***
31
+
32
+ #### FtlNavbar
33
+
34
+ 顶部导航栏
35
+
36
+ | 属性 | 说明 | 类型 | 默认值 |
37
+ |:----------------:|:---------:|:--------:|:----------------------------:|
38
+ | sidebar | 是否可以收起侧边栏 | boolean | true |
39
+ | isShowBreadcrumb | 是否展示面包屑 | boolean | true |
40
+ | isShowScreenfull | 是否可以全屏展示 | boolean | true |
41
+ | langCodeList | 语言下拉框选项 | string[] | 'en', 'cn', 'fr', 'es', 'or' |
42
+ | logOutText | 退出按钮文本 | string? | 退出 |
43
+
44
+
45
+ #### FtlSidebar
46
+
47
+ 侧边栏
48
+
49
+ | 属性 | 说明 | 类型 | 默认值 |
50
+ |:----------------:|:-------:|:-----------------:|:----:|
51
+ | collapse | 是否展开侧边栏 | boolean | true |
52
+ | sideBarParams | 侧边栏配置 | SidebarParamsType | {} |
53
+
54
+ #### FtlEntry
55
+
56
+ 下拉框(提供项目间跳转的能力)
57
+
58
+ | 属性 | 说明 | 类型 | 默认值 |
59
+ |:-------------:|:------:|:------:|:---------:|
60
+ | witdh | 下拉框宽度 | number | 240 |
61
+ | authBaseUrl | 权限请求地址 | string | gateway地址 |
@@ -0,0 +1,25 @@
1
+ @import './public.scss';
2
+ @import './mixin.scss';
3
+
4
+ $color: #fff !default;
5
+ $--color-header: #4f83b2 !default;
6
+ $--color-text: #74bdff !default;
7
+ $bg: #2b3b49 !default;
8
+ $content-bg: #78848e !default;
9
+
10
+ .sidebar-container {
11
+ @include sidebar-container($bg, $color, $--color-header, $content-bg, $--color-text);
12
+ }
13
+
14
+ .el-menu--vertical {
15
+ @include el-menu--vertical($bg, $--color-header, $--color-text);
16
+ }
17
+
18
+ .level-bar-toggle-button {
19
+ @include toggle-button($--color-header);
20
+ }
21
+
22
+ ::-webkit-scrollbar-thumb {
23
+ background-color: $--color-header;
24
+ border-radius: 5px;
25
+ }
@@ -0,0 +1,142 @@
1
+ @mixin toggle-button($--color-header) {
2
+ height: 35px;
3
+ font-size: 18px;
4
+ margin-left: 10px;
5
+ color: #fff;
6
+ border-radius: 5px;
7
+ background-color: $--color-header;
8
+ padding: 0 10px;
9
+ cursor: pointer;
10
+ display: flex;
11
+ justify-content: center;
12
+ align-items: center;
13
+ }
14
+
15
+ @mixin sidebar-container($bg, $color, $--color-header, $content-bg, $--color-text) {
16
+ background-color: $bg;
17
+ .sidebar-container-header {
18
+ color: $color;
19
+ padding: 10px 0;
20
+ border-bottom: 2px solid $--color-header;
21
+ .pic-box {
22
+ width: 46px;
23
+ height: 46px;
24
+ overflow: hidden;
25
+ .logo {
26
+ width: 46px;
27
+ height: 46px;
28
+ filter: drop-shadow(120px 0px #fff);
29
+ transform: translateX(-120px);
30
+ }
31
+ }
32
+ .ftl-pic-box {
33
+ height: 46px;
34
+ display: flex;
35
+ justify-content: center;
36
+ align-items: center;
37
+ .logo {
38
+ width: 46px;
39
+ height: 30px;
40
+ }
41
+ }
42
+ }
43
+ .el-menu-vertical-demo {
44
+ padding: 10px;
45
+ }
46
+ .el-menu {
47
+ background-color: $bg;
48
+ border: none;
49
+ .custom-menu-item {
50
+ height: 38px;
51
+ line-height: 38px;
52
+ color: #fff !important;
53
+ overflow: hidden;
54
+ border-radius: 10px;
55
+ &:focus,
56
+ &:hover,
57
+ &.is-active {
58
+ background-color: $--color-header !important;
59
+ }
60
+ i {
61
+ color: #fff;
62
+ }
63
+ }
64
+ .el-sub-menu {
65
+ color: #fff !important;
66
+ margin-bottom: 10px;
67
+ &:focus,
68
+ &:hover,
69
+ &.is-active {
70
+ & > .el-sub-menu__title {
71
+ background-color: $--color-header !important;
72
+ }
73
+ }
74
+ .el-sub-menu__title {
75
+ height: 38px;
76
+ line-height: 38px;
77
+ border-radius: 10px;
78
+ color: #fff !important;
79
+ }
80
+ &.is-opened {
81
+ background: $--color-header;
82
+ border-radius: 10px;
83
+ .el-menu {
84
+ background-color: $content-bg !important;
85
+ border-bottom-left-radius: 10px !important;
86
+ border-bottom-right-radius: 10px !important;
87
+ }
88
+ }
89
+ .el-menu-item {
90
+ height: 38px;
91
+ line-height: 38px;
92
+ background-color: transparent !important;
93
+ color: #fff !important;
94
+ padding: 0 0 0 55px !important;
95
+ &:focus,
96
+ &:hover,
97
+ &.is-active {
98
+ color: $--color-text !important;
99
+ i {
100
+ color: $--color-text !important;
101
+ }
102
+ }
103
+ &:last-child {
104
+ margin-bottom: 0;
105
+ }
106
+ }
107
+ }
108
+ }
109
+ }
110
+
111
+ @mixin el-menu--vertical($bg, $--color-header, $--color-text) {
112
+ .el-tooltip__trigger {
113
+ padding: 0 !important;
114
+ display: flex;
115
+ justify-content: center;
116
+ align-items: center;
117
+ i {
118
+ margin-right: 0;
119
+ }
120
+ }
121
+ .el-menu {
122
+ background: $bg !important;
123
+ .el-menu-item {
124
+ color: #fff !important;
125
+ &:focus,
126
+ &:hover {
127
+ background: none !important;
128
+ color: $--color-text !important;
129
+ i {
130
+ color: $--color-text !important;
131
+ }
132
+ }
133
+ i {
134
+ color: #fff;
135
+ }
136
+ }
137
+ }
138
+ }
139
+
140
+ .el-popper.is-pure {
141
+ border: none;
142
+ }
@@ -0,0 +1,176 @@
1
+ * {
2
+ box-sizing: border-box;
3
+ margin: 0;
4
+ padding: 0;
5
+ }
6
+
7
+ @for $i from -20 through 20 {
8
+ $num: 5 * $i;
9
+ .p#{$num} {
10
+ padding: 0px + $num;
11
+ }
12
+ .pt#{$num} {
13
+ padding-top: 0px + $num;
14
+ }
15
+ .pr#{$num} {
16
+ padding-right: 0px + $num;
17
+ }
18
+ .pb#{$num} {
19
+ padding-bottom: 0px + $num;
20
+ }
21
+ .pl#{$num} {
22
+ padding-left: 0px + $num;
23
+ }
24
+ .pv#{$num} {
25
+ padding-top: 0px + $num;
26
+ padding-bottom: 0px + $num;
27
+ }
28
+ .ph#{$num} {
29
+ padding-left: 0px + $num;
30
+ padding-right: 0px + $num;
31
+ }
32
+ .m#{$num} {
33
+ margin: 0px + $num;
34
+ }
35
+ .mt#{$num} {
36
+ margin-top: 0px + $num;
37
+ }
38
+ .mr#{$num} {
39
+ margin-right: 0px + $num;
40
+ }
41
+ .mb#{$num} {
42
+ margin-bottom: 0px + $num;
43
+ }
44
+ .ml#{$num} {
45
+ margin-left: 0px + $num;
46
+ }
47
+ .mv#{$num} {
48
+ margin-top: 0px + $num;
49
+ margin-bottom: 0px + $num;
50
+ }
51
+ .mh#{$num} {
52
+ margin-left: 0px + $num;
53
+ margin-right: 0px + $num;
54
+ }
55
+ }
56
+
57
+ @for $j from 12 through 40 {
58
+ .fs#{$j} {
59
+ font-size: 0px + $j !important;
60
+ }
61
+ .lh#{$j} {
62
+ line-height: 0px + $j;
63
+ }
64
+ }
65
+
66
+ .f {
67
+ display: flex;
68
+ }
69
+
70
+ .f-s-c {
71
+ display: flex;
72
+ justify-content: space-between;
73
+ align-items: center;
74
+ }
75
+
76
+ .f-s {
77
+ display: flex;
78
+ justify-content: space-between;
79
+ }
80
+
81
+ .f-c {
82
+ display: flex;
83
+ align-items: center;
84
+ }
85
+
86
+ .f-c-c {
87
+ display: flex;
88
+ justify-content: center;
89
+ align-items: center;
90
+ }
91
+
92
+ .f-c-e {
93
+ display: flex;
94
+ justify-content: flex-end;
95
+ align-items: center;
96
+ }
97
+
98
+ .f-c-c-c {
99
+ display: flex;
100
+ flex-direction: column;
101
+ justify-content: center;
102
+ align-items: center;
103
+ }
104
+
105
+ .f600 {
106
+ font-weight: 600;
107
+ }
108
+
109
+ .tl {
110
+ text-align: left;
111
+ }
112
+ .tc {
113
+ text-align: center;
114
+ }
115
+ .tr {
116
+ text-align: right;
117
+ }
118
+
119
+ .cp {
120
+ cursor: pointer;
121
+ }
122
+
123
+ .breadcrumb-enter-active,
124
+ .breadcrumb-leave-active {
125
+ transition: all 0.5s;
126
+ }
127
+
128
+ .breadcrumb-enter,
129
+ .breadcrumb-leave-active {
130
+ opacity: 0;
131
+ transform: translateX(20px);
132
+ }
133
+
134
+ .breadcrumb-move {
135
+ transition: all 0.5s;
136
+ }
137
+
138
+ .breadcrumb-leave-active {
139
+ position: absolute;
140
+ }
141
+
142
+ .fade-enter-from {
143
+ opacity: 0;
144
+ transform: translateX(-30px);
145
+ }
146
+
147
+ .fade-leave-to {
148
+ opacity: 0;
149
+ transform: translateX(30px);
150
+ }
151
+
152
+ .fade-enter-active {
153
+ transition: all 0.5s;
154
+ }
155
+ .fade-leave-active {
156
+ transition: all 0.5s;
157
+ }
158
+
159
+ ::-webkit-scrollbar {
160
+ width: 8px;
161
+ height: 8px;
162
+ z-index: 9999;
163
+ }
164
+
165
+ ::-webkit-scrollbar-track {
166
+ border-radius: 0;
167
+ background-color: transparent;
168
+ }
169
+
170
+ input:-webkit-autofill,
171
+ input:-webkit-autofill:hover,
172
+ input:-webkit-autofill:focus,
173
+ input:-webkit-autofill:active {
174
+ transition-delay: 111111s;
175
+ transition: color 11111s ease-out, background-color 111111s ease-out;
176
+ }
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,38 @@
1
+ /* eslint-disable */
2
+ /* prettier-ignore */
3
+ // @ts-nocheck
4
+ // Generated by unplugin-vue-components
5
+ // Read more: https://github.com/vuejs/core/pull/3399
6
+ export {}
7
+
8
+ declare module 'vue' {
9
+ export interface GlobalComponents {
10
+ ElBreadcrumb: typeof import('element-plus/es')['ElBreadcrumb']
11
+ ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
12
+ ElButton: typeof import('element-plus/es')['ElButton']
13
+ ElCard: typeof import('element-plus/es')['ElCard']
14
+ ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
15
+ ElDialog: typeof import('element-plus/es')['ElDialog']
16
+ ElDivider: typeof import('element-plus/es')['ElDivider']
17
+ ElDropdown: typeof import('element-plus/es')['ElDropdown']
18
+ ElDropdownItem: typeof import('element-plus/es')['ElDropdownItem']
19
+ ElDropdownMenu: typeof import('element-plus/es')['ElDropdownMenu']
20
+ ElForm: typeof import('element-plus/es')['ElForm']
21
+ ElFormItem: typeof import('element-plus/es')['ElFormItem']
22
+ ElIcon: typeof import('element-plus/es')['ElIcon']
23
+ ElInput: typeof import('element-plus/es')['ElInput']
24
+ ElMenu: typeof import('element-plus/es')['ElMenu']
25
+ ElMenuItem: typeof import('element-plus/es')['ElMenuItem']
26
+ ElPopover: typeof import('element-plus/es')['ElPopover']
27
+ ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
28
+ ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
29
+ ElSubMenu: typeof import('element-plus/es')['ElSubMenu']
30
+ ElTabPane: typeof import('element-plus/es')['ElTabPane']
31
+ ElTabs: typeof import('element-plus/es')['ElTabs']
32
+ RouterLink: typeof import('vue-router')['RouterLink']
33
+ RouterView: typeof import('vue-router')['RouterView']
34
+ }
35
+ export interface ComponentCustomProperties {
36
+ vLoading: typeof import('element-plus/es')['ElLoadingDirective']
37
+ }
38
+ }