vue3-admin-gpt 1.1.0 → 1.1.1

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/.env.development CHANGED
@@ -11,4 +11,4 @@ VUE_APP_AUTHOR=开发部门
11
11
  VUE_APP_BASE_API=/api
12
12
 
13
13
  # 是否启用Mock
14
- VUE_APP_MOCK_ENABLE=true
14
+ VUE_APP_MOCK_ENABLE=false
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vue3-admin-gpt",
3
- "version": "1.1.0",
3
+ "version": "1.1.1",
4
4
  "description": "A Vue3 admin template with Element Plus and Rspack",
5
5
  "author": "pxq555",
6
6
  "license": "MIT",
package/rspack.config.js CHANGED
@@ -40,6 +40,8 @@ const resolve = (dir) => path.join(__dirname, dir);
40
40
  module.exports = {
41
41
  mode: mode,
42
42
  context: __dirname,
43
+ // 配置 source map 以支持开发调试
44
+ devtool: mode === "production" ? "source-map" : "eval-cheap-module-source-map",
43
45
  entry: {
44
46
  app: "./src/main.js",
45
47
  },
@@ -171,7 +173,7 @@ module.exports = {
171
173
  "process.env.NODE_ENV": JSON.stringify(mode),
172
174
  "process.env.BASE_URL": JSON.stringify(process.env.BASE_URL),
173
175
  "process.env.VUE_APP_TITLE": JSON.stringify(process.env.VUE_APP_TITLE),
174
- "process.env.VUE_APP_MOCK_ENABLE": JSON.stringify("true"), // 确保在所有环境中mock都为true
176
+ "process.env.VUE_APP_MOCK_ENABLE": JSON.stringify(process.env.VUE_APP_MOCK_ENABLE), // 确保在所有环境中mock都为true
175
177
  "process.env.VUE_APP_AUTHOR": JSON.stringify(process.env.VUE_APP_AUTHOR),
176
178
  "process.env.VUE_APP_BASE_API": JSON.stringify(process.env.VUE_APP_BASE_API),
177
179
  "process.env.VUE_APP_UPDATE_TIME": JSON.stringify(
package/rspack.js CHANGED
@@ -100,19 +100,24 @@ if (mode === "production") {
100
100
  // 使用rspack.config.js中的所有devServer配置
101
101
  const devServerOptions = config.devServer || {};
102
102
 
103
- // 设置mock服务器,不再检查环境变量,始终启用mock
104
- // if (!devServerOptions.setupMiddlewares) {
105
- // devServerOptions.setupMiddlewares = (middlewares, devServer) => {
106
- // if (!devServer) {
107
- // throw new Error("dev-server is not defined");
108
- // }
109
-
110
- // const mockServer = require("./mock/index");
111
- // mockServer(devServer.app);
112
-
113
- // return middlewares;
114
- // };
115
- // }
103
+ // 根据环境变量控制是否启用mock服务
104
+ if (process.env.VUE_APP_MOCK_ENABLE === "true") {
105
+ if (!devServerOptions.setupMiddlewares) {
106
+ devServerOptions.setupMiddlewares = (middlewares, devServer) => {
107
+ if (!devServer) {
108
+ throw new Error("dev-server is not defined");
109
+ }
110
+
111
+ const mockServer = require("./mock/index");
112
+ mockServer(devServer.app);
113
+
114
+ return middlewares;
115
+ };
116
+ }
117
+ console.log("Mock服务已启用");
118
+ } else {
119
+ console.log("Mock服务未启用 (VUE_APP_MOCK_ENABLE=" + process.env.VUE_APP_MOCK_ENABLE + ")");
120
+ }
116
121
 
117
122
  const server = new RspackDevServer(devServerOptions, compiler);
118
123
 
@@ -31,7 +31,7 @@ const setting = {
31
31
  //加载时显示文字
32
32
  loadingText: "正在加载中...",
33
33
  //token名称
34
- tokenName: "accessToken",
34
+ tokenName: "Authorization",
35
35
  //token在localStorage、sessionStorage存储的key的名称
36
36
  tokenTableName: "admin-scaffold-token",
37
37
  //token存储位置localStorage sessionStorage
@@ -1,6 +1,6 @@
1
1
  <template>
2
2
  <div class="app-main-container">
3
- <router-view v-slot="{ Component }">
3
+ <router-view v-if="routerView" v-slot="{ Component }">
4
4
  <transition mode="out-in" name="fade-transform">
5
5
  <keep-alive :include="cachedRoutes" :max="keepAliveMaxNum">
6
6
  <component :is="Component" class="app-main-height" />
@@ -1 +1,30 @@
1
- /* 绿荫草场主题、荣耀典藏主题、暗黑之子主题加QQ讨论群972435319、1139183756后私聊群主获取,获取后将主题放到themes文件夹根目录即可 */
1
+ /**
2
+ * 默认主题 - 蓝色系
3
+ */
4
+ .vue3-admin-theme-default {
5
+ // 主色调变量(在组件中使用 CSS 变量)
6
+ --theme-primary: #409eff;
7
+ --theme-primary-light: #66b1ff;
8
+ --theme-primary-dark: #3a8ee6;
9
+
10
+ // 侧边栏背景
11
+ --theme-sidebar-bg: #21252b;
12
+ --theme-sidebar-active-bg: #409eff;
13
+
14
+ // 顶部导航栏
15
+ --theme-header-bg: #ffffff;
16
+ --theme-header-text: #303133;
17
+
18
+ // 标签栏
19
+ --theme-tabs-bg: #ffffff;
20
+ --theme-tabs-active-bg: #409eff;
21
+
22
+ // 卡片背景
23
+ --theme-card-bg: #ffffff;
24
+ --theme-card-border: #ebeef5;
25
+
26
+ // 文字颜色
27
+ --theme-text-primary: #303133;
28
+ --theme-text-regular: #606266;
29
+ --theme-text-secondary: #909399;
30
+ }
@@ -0,0 +1,193 @@
1
+ body.vue3-admin-theme-glory .logo-container-horizontal {
2
+ background: #2e2f34 !important;
3
+ }
4
+ body.vue3-admin-theme-glory .logo-container-vertical {
5
+ background: #2e2f34 !important;
6
+ }
7
+ body.vue3-admin-theme-glory .el-menu {
8
+ background: #2e2f34 !important;
9
+ }
10
+ body.vue3-admin-theme-glory .el-menu .el-submenu__title {
11
+ background: #2e2f34 !important;
12
+ }
13
+ body.vue3-admin-theme-glory .el-menu .el-menu-item {
14
+ background: #2e2f34 !important;
15
+ }
16
+ body.vue3-admin-theme-glory .side-container {
17
+ background: #2e2f34 !important;
18
+ }
19
+ body.vue3-admin-theme-glory .side-container .el-menu-item:hover {
20
+ background-color: #f6ca9d !important;
21
+ }
22
+ body.vue3-admin-theme-glory .side-container .el-menu-item.is-active {
23
+ background-color: #f6ca9d !important;
24
+ }
25
+ body.vue3-admin-theme-glory .top-container {
26
+ background: #2e2f34 !important;
27
+ }
28
+ body.vue3-admin-theme-glory .top-container .vab-main {
29
+ background: #2e2f34 !important;
30
+ }
31
+ body.vue3-admin-theme-glory
32
+ .top-container
33
+ .vab-main
34
+ .el-menu--horizontal
35
+ .el-submenu.is-active,
36
+ body.vue3-admin-theme-glory
37
+ .top-container
38
+ .vab-main
39
+ .el-menu--horizontal
40
+ .el-menu-item.is-active {
41
+ background-color: #f6ca9d !important;
42
+ }
43
+ body.vue3-admin-theme-glory
44
+ .top-container
45
+ .vab-main
46
+ .el-menu--horizontal
47
+ > .el-menu-item.is-active {
48
+ border-bottom: 3px solid #f6ca9d !important;
49
+ }
50
+ body.vue3-admin-theme-glory .tabs-container {
51
+ background: rgba(255, 255, 255, 0.8) !important;
52
+ backdrop-filter: blur(20px) saturate(180%) !important;
53
+ -webkit-backdrop-filter: blur(20px) saturate(180%) !important;
54
+ border-top: 1px solid rgba(255, 255, 255, 0.3) !important;
55
+ box-shadow:
56
+ 0 4px 6px -1px rgba(0, 0, 0, 0.1),
57
+ 0 2px 4px -1px rgba(0, 0, 0, 0.06),
58
+ inset 0 1px 0 rgba(255, 255, 255, 0.6) !important;
59
+ }
60
+ body.vue3-admin-theme-glory
61
+ .tabs-container
62
+ .tabs-content
63
+ .el-tabs__header
64
+ .el-tabs__item {
65
+ border: 1px solid #f6ca9d !important;
66
+ color: #f6ca9d !important;
67
+ }
68
+ body.vue3-admin-theme-glory
69
+ .tabs-container
70
+ .tabs-content
71
+ .el-tabs__header
72
+ .el-tabs__item.is-active {
73
+ color: rgba(255, 255, 255, 0.95) !important;
74
+ background: #f6ca9d !important;
75
+ border: 1px solid #f6ca9d !important;
76
+ }
77
+ body.vue3-admin-theme-glory
78
+ .tabs-container
79
+ .tabs-content
80
+ .el-tabs__header
81
+ .el-tabs__item:hover {
82
+ color: rgba(255, 255, 255, 0.95) !important;
83
+ background: #f6ca9d !important;
84
+ border-color: #f6ca9d !important;
85
+ }
86
+ body.vue3-admin-theme-glory .theme-setting {
87
+ background: #f6ca9d !important;
88
+ }
89
+ body.vue3-admin-theme-glory .el-divider {
90
+ background: linear-gradient(
91
+ 90deg,
92
+ transparent,
93
+ rgba(246, 202, 157, 0.3),
94
+ transparent
95
+ ) !important;
96
+ }
97
+ body.vue3-admin-theme-glory .el-divider--horizontal .el-divider__text {
98
+ color: #2e2f34 !important;
99
+ background: rgba(255, 255, 255, 0.9) !important;
100
+ }
101
+ body.vue3-admin-theme-glory
102
+ .el-divider--horizontal
103
+ .el-divider__text::before {
104
+ background: #f6ca9d !important;
105
+ }
106
+ body.vue3-admin-theme-glory .el-divider--vertical {
107
+ background: rgba(246, 202, 157, 0.3) !important;
108
+ }
109
+ body.vue3-admin-theme-glory .el-divider--primary {
110
+ background: linear-gradient(
111
+ 90deg,
112
+ transparent,
113
+ #f6ca9d,
114
+ transparent
115
+ ) !important;
116
+ }
117
+ body.vue3-admin-theme-glory .el-divider--primary .el-divider__text {
118
+ color: #f6ca9d !important;
119
+ }
120
+ body.vue3-admin-theme-glory
121
+ .el-divider--primary
122
+ .el-divider__text::before {
123
+ background: #f6ca9d !important;
124
+ }
125
+ body.vue3-admin-theme-glory .el-divider--success {
126
+ background: linear-gradient(
127
+ 90deg,
128
+ transparent,
129
+ #67c23a,
130
+ transparent
131
+ ) !important;
132
+ }
133
+ body.vue3-admin-theme-glory .el-divider--success .el-divider__text {
134
+ color: #67c23a !important;
135
+ }
136
+ body.vue3-admin-theme-glory
137
+ .el-divider--success
138
+ .el-divider__text::before {
139
+ background: #67c23a !important;
140
+ }
141
+ body.vue3-admin-theme-glory .el-divider--warning {
142
+ background: linear-gradient(
143
+ 90deg,
144
+ transparent,
145
+ #e6a23c,
146
+ transparent
147
+ ) !important;
148
+ }
149
+ body.vue3-admin-theme-glory .el-divider--warning .el-divider__text {
150
+ color: #e6a23c !important;
151
+ }
152
+ body.vue3-admin-theme-glory
153
+ .el-divider--warning
154
+ .el-divider__text::before {
155
+ background: #e6a23c !important;
156
+ }
157
+ body.vue3-admin-theme-glory .el-divider--danger {
158
+ background: linear-gradient(
159
+ 90deg,
160
+ transparent,
161
+ #f56c6c,
162
+ transparent
163
+ ) !important;
164
+ }
165
+ body.vue3-admin-theme-glory .el-divider--danger .el-divider__text {
166
+ color: #f56c6c !important;
167
+ }
168
+ body.vue3-admin-theme-glory
169
+ .el-divider--danger
170
+ .el-divider__text::before {
171
+ background: #f56c6c !important;
172
+ }
173
+ body.vue3-admin-theme-glory .el-divider--dashed {
174
+ background: none !important;
175
+ border-top: 1px dashed rgba(246, 202, 157, 0.3) !important;
176
+ }
177
+ body.vue3-admin-theme-glory .el-divider--dashed .el-divider__text {
178
+ background: rgba(255, 255, 255, 0.9) !important;
179
+ }
180
+ body.vue3-admin-theme-glory .el-divider--thick {
181
+ height: 2px !important;
182
+ background: linear-gradient(
183
+ 90deg,
184
+ transparent,
185
+ #f6ca9d,
186
+ transparent
187
+ ) !important;
188
+ }
189
+ body.vue3-admin-theme-glory .page-header {
190
+ background: linear-gradient(135deg, #f38b00 0%, #f6ca9d 100%) !important;
191
+ border: 1px solid rgba(0, 150, 136, 0.15) !important;
192
+ box-shadow: 0 4px 20px rgba(0, 150, 136, 0.1) !important;
193
+ }
@@ -0,0 +1,281 @@
1
+ body.vue3-admin-theme-green .el-button--primary,
2
+ body.vue3-admin-theme-green .el-switch.is-checked .el-switch__core,
3
+ body.vue3-admin-theme-green
4
+ .el-checkbox__input.is-checked
5
+ .el-checkbox__inner,
6
+ body.vue3-admin-theme-green
7
+ .el-pagination.is-background
8
+ .el-pager
9
+ li:not(.disabled).active,
10
+ body.vue3-admin-theme-green .el-radio__input.is-checked .el-radio__inner,
11
+ body.vue3-admin-theme-green
12
+ .el-checkbox__input.is-indeterminate
13
+ .el-checkbox__inner {
14
+ background: #009688 !important;
15
+ border-color: #009688 !important;
16
+ }
17
+ body.vue3-admin-theme-green .el-button--text,
18
+ body.vue3-admin-theme-green
19
+ .el-checkbox__input.is-checked
20
+ + .el-checkbox__label,
21
+ body.vue3-admin-theme-green .el-loading-spinner .el-loading-text,
22
+ body.vue3-admin-theme-green .el-loading-spinner i,
23
+ body.vue3-admin-theme-green
24
+ .el-radio__input.is-checked
25
+ + .el-radio__label,
26
+ body.vue3-admin-theme-green .el-cascader-node.in-active-path,
27
+ body.vue3-admin-theme-green
28
+ .el-cascader-node.is-selectable.in-checked-path,
29
+ body.vue3-admin-theme-green .el-cascader-node.is-active,
30
+ body.vue3-admin-theme-green .el-dropdown-menu__item:focus,
31
+ body.vue3-admin-theme-green
32
+ .el-dropdown-menu__item:not(.is-disabled):hover,
33
+ body.vue3-admin-theme-green .el-tabs__item.is-active,
34
+ body.vue3-admin-theme-green .el-upload--picture-card:hover,
35
+ body.vue3-admin-theme-green .el-tabs__item:hover,
36
+ body.vue3-admin-theme-green .el-upload:focus,
37
+ body.vue3-admin-theme-green
38
+ .el-radio-button__orig-radio:not(:checked)
39
+ + .el-radio-button__inner:hover,
40
+ body.vue3-admin-theme-green
41
+ .el-button--default:not(.el-button--primary):active,
42
+ body.vue3-admin-theme-green
43
+ .el-button--default:not(.el-button--primary):hover,
44
+ body.vue3-admin-theme-green
45
+ .el-button--default:not(.el-button--primary):focus,
46
+ body.vue3-admin-theme-green
47
+ .el-tag:not(.el-tag--danger):not(.el-tag--success):not(.el-tag--info):not(
48
+ .el-tag--warning
49
+ ) {
50
+ color: #009688;
51
+ }
52
+ body.vue3-admin-theme-green .el-checkbox__inner:hover,
53
+ body.vue3-admin-theme-green
54
+ .el-select
55
+ .el-input.is-focus
56
+ .el-input__inner,
57
+ body.vue3-admin-theme-green .el-input__inner:focus,
58
+ body.vue3-admin-theme-green .el-range-editor.is-active:hover,
59
+ body.vue3-admin-theme-green .el-range-editor.is-activ,
60
+ body.vue3-admin-theme-green .el-upload--picture-card:hover,
61
+ body.vue3-admin-theme-green .el-upload:focus,
62
+ body.vue3-admin-theme-green .el-textarea__inner:focus,
63
+ body.vue3-admin-theme-green
64
+ .el-button--default:not(.el-button--primary):active,
65
+ body.vue3-admin-theme-green
66
+ .el-button--default:not(.el-button--primary):hover,
67
+ body.vue3-admin-theme-green
68
+ .el-button--default:not(.el-button--primary):focus,
69
+ body.vue3-admin-theme-green .el-range-editor.is-active {
70
+ border-color: #009688 !important;
71
+ }
72
+ body.vue3-admin-theme-green .el-tabs__active-bar {
73
+ background: #009688 !important;
74
+ }
75
+ body.vue3-admin-theme-green
76
+ .el-radio-button__orig-radio:checked
77
+ + .el-radio-button__inner {
78
+ background: #009688 !important;
79
+ border-color: #009688 !important;
80
+ box-shadow: -1px 0 0 0 #009688 !important;
81
+ }
82
+ body.vue3-admin-theme-green .logo-container-horizontal {
83
+ background: #16181d !important;
84
+ }
85
+ body.vue3-admin-theme-green .logo-container-vertical {
86
+ background: #16181d !important;
87
+ }
88
+ body.vue3-admin-theme-green .el-menu {
89
+ background: #16181d !important;
90
+ }
91
+ body.vue3-admin-theme-green .el-menu .el-submenu__title {
92
+ background: #16181d !important;
93
+ }
94
+ body.vue3-admin-theme-green .el-menu .el-menu-item {
95
+ background: #16181d !important;
96
+ }
97
+ body.vue3-admin-theme-green .side-container,
98
+ body.vue3-admin-theme-green .Fold {
99
+ background: #16181d !important;
100
+ }
101
+ body.vue3-admin-theme-green .side-container .el-menu-item:hover,
102
+ body.vue3-admin-theme-green .Fold .el-menu-item:hover {
103
+ background-color: #009688 !important;
104
+ }
105
+ body.vue3-admin-theme-green .side-container .el-menu-item.is-active,
106
+ body.vue3-admin-theme-green .Fold .el-menu-item.is-active {
107
+ background-color: #009688 !important;
108
+ }
109
+ body.vue3-admin-theme-green .top-container {
110
+ background: #16181d !important;
111
+ }
112
+ body.vue3-admin-theme-green .top-container .vab-main {
113
+ background: #16181d !important;
114
+ }
115
+ body.vue3-admin-theme-green
116
+ .top-container
117
+ .vab-main
118
+ .el-menu--horizontal
119
+ .el-submenu.is-active,
120
+ body.vue3-admin-theme-green
121
+ .top-container
122
+ .vab-main
123
+ .el-menu--horizontal
124
+ .el-menu-item.is-active {
125
+ background-color: #009688 !important;
126
+ }
127
+ body.vue3-admin-theme-green
128
+ .top-container
129
+ .vab-main
130
+ .el-menu--horizontal
131
+ > .el-menu-item.is-active {
132
+ border-bottom: 3px solid #009688 !important;
133
+ }
134
+ body.vue3-admin-theme-green .tabs-container {
135
+ background: rgba(255, 255, 255, 0.8) !important;
136
+ backdrop-filter: blur(20px) saturate(180%) !important;
137
+ -webkit-backdrop-filter: blur(20px) saturate(180%) !important;
138
+ border-top: 1px solid rgba(255, 255, 255, 0.3) !important;
139
+ box-shadow:
140
+ 0 4px 6px -1px rgba(0, 0, 0, 0.1),
141
+ 0 2px 4px -1px rgba(0, 0, 0, 0.06),
142
+ inset 0 1px 0 rgba(255, 255, 255, 0.6) !important;
143
+ }
144
+ body.vue3-admin-theme-green
145
+ .tabs-container
146
+ .tabs-content
147
+ .el-tabs__header
148
+ .el-tabs__item {
149
+ border: 1px solid #009688 !important;
150
+ color: #009688 !important;
151
+ }
152
+ body.vue3-admin-theme-green
153
+ .tabs-container
154
+ .tabs-content
155
+ .el-tabs__header
156
+ .el-tabs__item.is-active {
157
+ color: rgba(255, 255, 255, 0.95) !important;
158
+ background: #009688 !important;
159
+ border: 1px solid #009688 !important;
160
+ }
161
+ body.vue3-admin-theme-green
162
+ .tabs-container
163
+ .tabs-content
164
+ .el-tabs__header
165
+ .el-tabs__item:hover {
166
+ color: rgba(255, 255, 255, 0.95) !important;
167
+ background: #009688 !important;
168
+ border-color: #009688 !important;
169
+ }
170
+ body.vue3-admin-theme-green .theme-setting {
171
+ background: #009688 !important;
172
+ }
173
+ body.vue3-admin-theme-green .el-divider {
174
+ background: linear-gradient(
175
+ 90deg,
176
+ transparent,
177
+ rgba(0, 150, 136, 0.3),
178
+ transparent
179
+ ) !important;
180
+ }
181
+ body.vue3-admin-theme-green .el-divider--horizontal .el-divider__text {
182
+ color: #16181d !important;
183
+ background: rgba(255, 255, 255, 0.95) !important;
184
+ }
185
+ body.vue3-admin-theme-green
186
+ .el-divider--horizontal
187
+ .el-divider__text::before {
188
+ background: #009688 !important;
189
+ }
190
+ body.vue3-admin-theme-green .el-divider--vertical {
191
+ background: rgba(0, 150, 136, 0.3) !important;
192
+ }
193
+ body.vue3-admin-theme-green .el-divider--primary {
194
+ background: linear-gradient(
195
+ 90deg,
196
+ transparent,
197
+ #009688,
198
+ transparent
199
+ ) !important;
200
+ }
201
+ body.vue3-admin-theme-green .el-divider--primary .el-divider__text {
202
+ color: #009688 !important;
203
+ }
204
+ body.vue3-admin-theme-green
205
+ .el-divider--primary
206
+ .el-divider__text::before {
207
+ background: #009688 !important;
208
+ }
209
+ body.vue3-admin-theme-green .el-divider--success {
210
+ background: linear-gradient(
211
+ 90deg,
212
+ transparent,
213
+ #67c23a,
214
+ transparent
215
+ ) !important;
216
+ }
217
+ body.vue3-admin-theme-green .el-divider--success .el-divider__text {
218
+ color: #67c23a !important;
219
+ }
220
+ body.vue3-admin-theme-green
221
+ .el-divider--success
222
+ .el-divider__text::before {
223
+ background: #67c23a !important;
224
+ }
225
+ body.vue3-admin-theme-green .el-divider--warning {
226
+ background: linear-gradient(
227
+ 90deg,
228
+ transparent,
229
+ #e6a23c,
230
+ transparent
231
+ ) !important;
232
+ }
233
+ body.vue3-admin-theme-green .el-divider--warning .el-divider__text {
234
+ color: #e6a23c !important;
235
+ }
236
+ body.vue3-admin-theme-green
237
+ .el-divider--warning
238
+ .el-divider__text::before {
239
+ background: #e6a23c !important;
240
+ }
241
+ body.vue3-admin-theme-green .el-divider--danger {
242
+ background: linear-gradient(
243
+ 90deg,
244
+ transparent,
245
+ #f56c6c,
246
+ transparent
247
+ ) !important;
248
+ }
249
+ body.vue3-admin-theme-green .el-divider--danger .el-divider__text {
250
+ color: #f56c6c !important;
251
+ }
252
+ body.vue3-admin-theme-green
253
+ .el-divider--danger
254
+ .el-divider__text::before {
255
+ background: #f56c6c !important;
256
+ }
257
+ body.vue3-admin-theme-green .el-divider--dashed {
258
+ background: none !important;
259
+ border-top: 1px dashed rgba(0, 150, 136, 0.3) !important;
260
+ }
261
+ body.vue3-admin-theme-green .el-divider--dashed .el-divider__text {
262
+ background: rgba(255, 255, 255, 0.95) !important;
263
+ }
264
+ body.vue3-admin-theme-green .el-divider--thick {
265
+ height: 2px !important;
266
+ background: linear-gradient(
267
+ 90deg,
268
+ transparent,
269
+ #009688,
270
+ transparent
271
+ ) !important;
272
+ }
273
+ body.vue3-admin-theme-green .page-header {
274
+ background: linear-gradient(
275
+ 135deg,
276
+ #009688 0%,
277
+ rgba(0, 150, 136, 0.5) 100%
278
+ ) !important;
279
+ border: 1px solid rgba(0, 150, 136, 0.15) !important;
280
+ box-shadow: 0 4px 20px rgba(0, 150, 136, 0.1) !important;
281
+ }
@@ -69,17 +69,22 @@ instance.interceptors.request.use(
69
69
  (config) => {
70
70
  const userStore = useUserStore();
71
71
  if (userStore.accessToken) {
72
- config.headers[tokenName] = userStore.accessToken;
72
+ config.headers[tokenName] = `Bearer ${userStore.accessToken}`;
73
+ }
74
+
75
+ // 如果是FormData,删除默认的Content-Type,让浏览器自动设置
76
+ if (config.data instanceof FormData) {
77
+ delete config.headers["Content-Type"];
73
78
  }
74
79
 
75
80
  //这里会过滤所有为空、0、false的key,如果不需要请自行注释
76
- if (config.data) config.data = pickBy(config.data, identity);
77
- if (
78
- config.data &&
79
- config.headers["Content-Type"] ===
80
- "application/x-www-form-urlencoded;charset=UTF-8"
81
- )
82
- config.data = qs.stringify(config.data);
81
+ // if (config.data) config.data = pickBy(config.data, identity);
82
+ // if (
83
+ // config.data &&
84
+ // config.headers["Content-Type"] ===
85
+ // "application/x-www-form-urlencoded;charset=UTF-8"
86
+ // )
87
+ // config.data = qs.stringify(config.data);
83
88
  if (debounce.some((item) => config.url.includes(item)))
84
89
  loadingInstance = ElLoading.service();
85
90