agilebuilder-ui 1.1.21 → 1.1.22

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 (32) hide show
  1. package/lib/{401-de65168e.js → 401-4a0b2ff3.js} +1 -1
  2. package/lib/{404-afc0cafe.js → 404-675a2b11.js} +1 -1
  3. package/lib/{iframe-page-c117a815.js → iframe-page-38a9c584.js} +1 -1
  4. package/lib/{index-ea3abd65.js → index-e23f840f.js} +10298 -10198
  5. package/lib/super-ui.css +1 -1
  6. package/lib/super-ui.js +1 -1
  7. package/lib/super-ui.umd.cjs +77 -77
  8. package/lib/{tab-content-iframe-index-b65e508f.js → tab-content-iframe-index-e6bc24b5.js} +1 -1
  9. package/lib/{tab-content-index-10776fd9.js → tab-content-index-5a36eab4.js} +2 -2
  10. package/lib/{tache-subprocess-history-da3e7545.js → tache-subprocess-history-59bda1ed.js} +1 -1
  11. package/package.json +1 -1
  12. package/packages/index.js +2 -0
  13. package/packages/super-grid/src/index-column.vue +1 -1
  14. package/packages/super-grid/src/super-grid.vue +2 -2
  15. package/src/components/Affix/index.vue +265 -0
  16. package/src/styles/_layout-custom-properties.scss +2 -2
  17. package/src/styles/display-layout.scss +11 -4
  18. package/src/styles/index.scss +0 -4
  19. package/src/styles/page-list.scss +25 -6
  20. package/src/styles/theme/dark-blue/index.scss +0 -27
  21. package/src/styles/theme/dark-blue/sidebar.scss +0 -5
  22. package/src/styles/theme/default.scss +2 -29
  23. package/src/styles/theme/gray/sidebar.scss +0 -5
  24. package/src/styles/theme/green/index.scss +0 -27
  25. package/src/styles/theme/green/sidebar.scss +0 -5
  26. package/src/styles/theme/ocean-blue/index.scss +0 -27
  27. package/src/styles/theme/ocean-blue/sidebar.scss +0 -5
  28. package/src/styles/theme/tiffany-blue-mobile/index.scss +0 -31
  29. package/src/styles/theme/tiffany-blue-mobile/sidebar.scss +0 -5
  30. package/src/views/dsc-component/tabs/tab-content.vue +1 -7
  31. package/src/views/layout/components/AppMain.vue +1 -1
  32. package/src/views/layout/components/tabs/tab-content.vue +1 -7
@@ -1,5 +1,5 @@
1
1
  import { openBlock as r, createElementBlock as t, createCommentVNode as o } from "vue";
2
- import { _ as s } from "./index-ea3abd65.js";
2
+ import { _ as s } from "./index-e23f840f.js";
3
3
  const u = ["src"], f = s({ data: () => ({ src: null }), watch: { $route(n, c) {
4
4
  this.src = this.$route.query.src;
5
5
  } }, mounted() {
@@ -1,4 +1,4 @@
1
- import { _ as f, c as $, g as x, b as P, s as h, m as M, M as O, i as I } from "./index-ea3abd65.js";
1
+ import { _ as f, c as $, g as x, b as P, s as h, m as M, M as O, i as I } from "./index-e23f840f.js";
2
2
  import { resolveComponent as u, openBlock as l, createBlock as b, withCtx as g, createVNode as v, TransitionGroup as L, createElementBlock as p, Fragment as T, renderList as C, createElementVNode as m, toDisplayString as w, normalizeClass as S, createCommentVNode as y } from "vue";
3
3
  const k = { class: "no-redirect" }, A = f({ name: "Breadcrumb", data: () => ({ levelList: null }), computed: { levelListWithTitle() {
4
4
  return this.levelList.filter((e) => e.meta.title !== void 0 && e.meta.title !== null);
@@ -96,7 +96,7 @@ const k = { class: "no-redirect" }, A = f({ name: "Breadcrumb", data: () => ({ l
96
96
  } } }, V = ["src"], Q = { key: 1, class: "default-page-tip" }, R = { class: "default-page-tip-msg" }, q = { class: "default-page-tip-item" }, z = { class: "default-page-tip-item" }, j = { class: "main-container" }, W = f({ name: "Layout", components: { Menubar: O, Breadcrumb: A, TabContent: f(N, [["render", function(e, t, a, r, o, s) {
97
97
  const d = u("el-tab-pane"), n = u("el-tabs");
98
98
  return e.openTab && e.openTab.length > 0 ? (l(), b(n, { key: 0, modelValue: s.activeIndex, "onUpdate:modelValue": t[0] || (t[0] = (i) => s.activeIndex = i), class: "nav-tab menu-tab-container", closable: "", onTabRemove: s.closeSelectedTag }, { default: g(() => [(l(!0), p(T, null, C(e.openTab, (i) => (l(), b(d, { key: i.code, label: i.name, name: i.code }, { default: g(() => [m("iframe", { ref_for: !0, ref: "tabMainContent", src: s.getFullPath(i), class: "tab-main-content", name: "tab-main-content", frameborder: "0" }, null, 8, V)]), _: 2 }, 1032, ["label", "name"]))), 128))]), _: 1 }, 8, ["modelValue", "onTabRemove"])) : (l(), p("div", Q, [m("div", R, [m("div", q, w(o.defaultPageTipCn), 1), m("div", z, w(o.defaultPageTipEn), 1)])]));
99
- }], ["__scopeId", "data-v-4a4e865b"]]) }, mixins: [E], data: () => ({ showMenuRoute: I(), systemCode: null }), computed: { sidebar() {
99
+ }], ["__scopeId", "data-v-a5252a92"]]) }, mixins: [E], data: () => ({ showMenuRoute: I(), systemCode: null }), computed: { sidebar() {
100
100
  return this.$store.state.app.sidebar;
101
101
  }, device() {
102
102
  return this.$store.state.app.device;
@@ -1,5 +1,5 @@
1
1
  import { resolveComponent as t, openBlock as a, createElementBlock as s, createElementVNode as y, createVNode as l, withCtx as r, createTextVNode as n, toDisplayString as p, createCommentVNode as c, createBlock as h } from "vue";
2
- import { _ as I } from "./index-ea3abd65.js";
2
+ import { _ as I } from "./index-e23f840f.js";
3
3
  const g = { style: { "padding-bottom": "10px" } }, k = { key: 0, class: "graphDiv" }, N = I({ name: "TacheSubprocessHistory", data: () => ({ type: "graph", workflowId: null }), created() {
4
4
  const o = this.$route.query.workflowId;
5
5
  o && (this.workflowId = parseInt(o));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agilebuilder-ui",
3
- "version": "1.1.21",
3
+ "version": "1.1.22",
4
4
  "type": "module",
5
5
  "private": false,
6
6
  "main": "./lib/super-ui.js",
package/packages/index.js CHANGED
@@ -45,8 +45,10 @@ import ScanCodeInputBrowser from './scan-code-input-browser'
45
45
  import WorkgroupTreeMobile from './workgroup-tree-mobile'
46
46
  import RowForm from './row-form'
47
47
  import * as ElementPlusIconsVue from "@element-plus/icons-vue"
48
+ import YxAffix from '../src/components/Affix';
48
49
  // 将所有组件都存储起来,方便后续统一注册
49
50
  const components = [
51
+ YxAffix,
50
52
  Breadcrumb,
51
53
  DepartmentTree,
52
54
  Hamburger,
@@ -2,7 +2,7 @@
2
2
  <el-table-column
3
3
  align="center"
4
4
  :fixed="fixed"
5
- :width="column.width ? column.width : '80'"
5
+ :width="70"
6
6
  >
7
7
  <template v-slot:header>
8
8
  <span class="cell--span">{{ $t('superGrid.index') }}</span>
@@ -111,7 +111,7 @@
111
111
  :title="$t('superGrid.columnConfig')"
112
112
  @click="configColumns"
113
113
  >
114
- <el-icon-setting style="width: 1em; height: 1em; color: #777; cursor: pointer;" />
114
+ <el-icon-setting style="width: 16px; height: 16px; color: #777; cursor: pointer;" />
115
115
  </div>
116
116
 
117
117
  <div
@@ -120,7 +120,7 @@
120
120
  :title="$t('superGrid.refresh')"
121
121
  @click="refreshGridData"
122
122
  >
123
- <el-icon-refresh style="width: 1em; height: 1em; color: #777; cursor: pointer;" />
123
+ <el-icon-refresh style="width: 16px; height: 16px; color: #777; cursor: pointer;" />
124
124
  </div>
125
125
 
126
126
  </div>
@@ -0,0 +1,265 @@
1
+ <template>
2
+ <div ref="affixMainRef" class="yx-affix">
3
+ <div v-if="isFixed" :style="placeholderStyle" class="yx-affix-placeholder" />
4
+ <div
5
+ ref="affixRef"
6
+ :style="affixStyle"
7
+ :class="{
8
+ 'yx-affix-content': true,
9
+ 'is-fixed': isFixed,
10
+ 'is-top': props.position === 'top',
11
+ 'is-bottom': props.position === 'bottom'
12
+ }"
13
+ >
14
+ <slot />
15
+ </div>
16
+ </div>
17
+ </template>
18
+
19
+ <script lang="ts" setup>
20
+ import { defineProps, defineEmits, ref, onMounted, onUnmounted, nextTick, computed, watchEffect } from 'vue';
21
+ import type { PropType, CSSProperties } from 'vue';
22
+
23
+ type Position = 'top' | 'bottom';
24
+ type Target = string | HTMLElement | Window;
25
+
26
+ const props = defineProps({
27
+ offset: {
28
+ type: Number,
29
+ default: 0
30
+ },
31
+ position: {
32
+ type: String as PropType<Position>,
33
+ default: 'top',
34
+ validator: (value: string): value is Position => ['top', 'bottom'].includes(value)
35
+ },
36
+ target: {
37
+ type: [String, HTMLElement] as PropType<Target>,
38
+ default: () => window
39
+ },
40
+ autoDetectParentScroll: {
41
+ type: Boolean,
42
+ default: true
43
+ },
44
+ stickyInScrollContainer: {
45
+ type: Boolean,
46
+ default: true
47
+ },
48
+ zIndex: {
49
+ type: Number,
50
+ default: 100
51
+ },
52
+ // 是否开启间隔监听
53
+ enableIntervalUpdate: {
54
+ type: Boolean,
55
+ default: true
56
+ },
57
+ enableIntervalTime: {
58
+ type: Number,
59
+ default: 2000
60
+ }
61
+ });
62
+
63
+ const emits = defineEmits<{
64
+ (e: 'change', fixed: boolean): void;
65
+ }>();
66
+
67
+ // 父级容器
68
+ const affixMainRef = ref<HTMLElement | null>(null);
69
+ // 悬浮容器
70
+ const affixRef = ref<HTMLElement | null>(null);
71
+ // 是否浮动
72
+ const isFixed = ref(false);
73
+ const placeholderStyle = ref<{ width?: string; height?: string }>({});
74
+ const scrollContainerDatas = ref<Array<HTMLElement | Window>>([]);
75
+ const scrollContainer = ref<HTMLElement | Window>(window);
76
+ const adjustedOffset = ref<number>(0);
77
+ const intervalId = ref<number | null>(null);
78
+
79
+ // 用于获取 距离顶部 底部 距离
80
+ const getAffixOffset = (containerRect: DOMRect) => {
81
+ const isTop = ['top'].includes(props.position);
82
+ const isBottom = ['bottom'].includes(props.position);
83
+ if (!affixMainRef.value) return { isTop, isBottom };
84
+
85
+ const affixMainRect = affixMainRef.value.getBoundingClientRect();
86
+ const offsetTop = affixMainRect.top - containerRect.top;
87
+ const offsetLeft = affixMainRect.left - containerRect.left;
88
+ const offsetBottom = containerRect.height - affixMainRect.height - offsetTop;
89
+ // 容器距离浏览器顶部
90
+ const containerTop = containerRect.top;
91
+ // 容器距离浏览器底部
92
+ const containerBottom = window.innerHeight - containerRect.bottom;
93
+ // 是否开启顶部悬浮
94
+ const isFixTop = isTop && offsetTop <= 0;
95
+ // 是否开启底部悬浮
96
+ const isFixBottom = isBottom && offsetBottom <= 0;
97
+ // 偏移距离
98
+ const containerOffset = isTop ? containerTop : isBottom ? containerBottom : 0;
99
+ return {
100
+ isTop,
101
+ isBottom,
102
+ containerTop,
103
+ containerBottom,
104
+ containerOffset,
105
+ offsetTop,
106
+ offsetLeft,
107
+ offsetBottom,
108
+ // 是否开启顶部悬浮
109
+ isFixTop,
110
+ // 是否开启底部悬浮
111
+ isFixBottom,
112
+ };
113
+ };
114
+
115
+ // 获取滚动容器
116
+ const getScrollContainer = (): Array<HTMLElement | Window> => {
117
+ if (props.autoDetectParentScroll && affixRef.value) {
118
+ const list: Array<HTMLElement | Window> = [];
119
+ let parent: HTMLElement | null = affixRef.value.parentElement;
120
+ while (parent && parent !== document.body) {
121
+ const { overflowY } = window.getComputedStyle(parent);
122
+ if (/(auto|scroll)/.test(overflowY)) {
123
+ list.push(parent);
124
+ }
125
+ parent = parent.parentElement;
126
+ }
127
+ return [...list, window];
128
+ }
129
+
130
+ if (typeof props.target === 'string') {
131
+ const el = document.querySelector(props.target);
132
+ return [...(el ? [el as HTMLElement] : []), window];
133
+ }
134
+ return [window];
135
+ };
136
+
137
+ // 检测滚动节点
138
+ const update = () => {
139
+ try {
140
+ if (!affixRef.value) return;
141
+ const rect = affixRef.value.getBoundingClientRect();
142
+ const container = scrollContainer.value;
143
+ if (container === window) {
144
+ const shouldFix = props.position === 'top' ? rect.top <= props.offset : rect.bottom >= window.innerHeight - props.offset;
145
+ adjustedOffset.value = 0;
146
+ updateFixedState(shouldFix, rect);
147
+ } else if (props.stickyInScrollContainer) {
148
+ const containerRect = (container as HTMLElement).getBoundingClientRect();
149
+ const { isFixTop, isFixBottom, containerOffset } = getAffixOffset(containerRect);
150
+ adjustedOffset.value = containerOffset ?? 0;
151
+ updateFixedState(isFixTop || isFixBottom || false, rect);
152
+ }
153
+ } catch (error) {
154
+ console.error(error)
155
+ }
156
+ };
157
+
158
+ // 更新固定状态
159
+ const updateFixedState = (shouldFix: boolean, rect: DOMRect) => {
160
+ if (shouldFix !== isFixed.value || placeholderStyle.value?.height !== `${rect.height}px`) {
161
+ isFixed.value = shouldFix;
162
+ emits('change', shouldFix);
163
+
164
+ if (shouldFix) {
165
+ placeholderStyle.value = {
166
+ width: `100%`,
167
+ height: `${rect.height}px`
168
+ };
169
+ } else {
170
+ placeholderStyle.value = {};
171
+ }
172
+ }
173
+ };
174
+
175
+ // 滚动事件处理
176
+ const handleScroll = () => {
177
+ requestAnimationFrame(update);
178
+ };
179
+
180
+ // 窗口大小变化处理
181
+ let resizeTimer: number;
182
+ const handleResize = () => {
183
+ isFixed.value = false;
184
+ clearTimeout(resizeTimer);
185
+ resizeTimer = window.setTimeout(() => {
186
+ update();
187
+ }, 100);
188
+ };
189
+
190
+ // 组件挂载
191
+ onMounted(() => {
192
+ setTimeout(() => {
193
+ nextTick(() => {
194
+ try {
195
+ // eslint-disable-next-line no-debugger
196
+ if (props.enableIntervalUpdate) {
197
+ intervalId.value = setInterval(handleScroll, props.enableIntervalTime);
198
+ }
199
+ const scrollList = getScrollContainer();
200
+ console.log('检测父级滚动节点', scrollList)
201
+ scrollContainerDatas.value = scrollList;
202
+ scrollContainer.value = scrollList[0];
203
+ scrollContainerDatas.value.forEach(dom => dom.addEventListener('scroll', handleScroll));
204
+ window.addEventListener('resize', handleResize);
205
+ update();
206
+ } catch (error) {
207
+ console.error(error)
208
+ }
209
+ });
210
+ }, 100)
211
+ });
212
+
213
+ // 组件卸载
214
+ onUnmounted(() => {
215
+ if (scrollContainer.value) {
216
+ scrollContainerDatas.value.forEach(dom => dom.removeEventListener('scroll', handleScroll));
217
+ }
218
+ window.removeEventListener('resize', handleResize);
219
+ clearTimeout(resizeTimer);
220
+ if (intervalId.value) clearInterval(intervalId.value);
221
+ });
222
+
223
+ watchEffect(() => {
224
+ nextTick(() => {
225
+ handleScroll();
226
+ });
227
+ });
228
+
229
+ // 计算样式
230
+ const affixStyle = computed(() => {
231
+ if (isFixed.value) {
232
+ return {
233
+ position: 'fixed',
234
+ width: `${affixRef.value?.offsetWidth}px`,
235
+ zIndex: props.zIndex,
236
+ [props.position]: `${props.offset + adjustedOffset.value}px`
237
+ } as CSSProperties;
238
+ }
239
+ return {
240
+ position: 'relative',
241
+ } as CSSProperties;
242
+ });
243
+ </script>
244
+
245
+ <style lang="scss" scoped>
246
+ .yx-affix {
247
+ &:has(.yx-affix-content:empty) {
248
+ display: none;
249
+ }
250
+ .yx-affix-content {
251
+ &.is-fixed {
252
+ &.is-top {
253
+ & > .yx-fixed-box-container {
254
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
255
+ }
256
+ }
257
+ &.is-bottom {
258
+ & > .yx-fixed-box-container {
259
+ box-shadow: 0 -2px 4px rgba(0, 0, 0, 0.2);
260
+ }
261
+ }
262
+ }
263
+ }
264
+ }
265
+ </style>
@@ -3,7 +3,7 @@
3
3
  --admin-layout-left-menu-expand: 240px; // 系统侧边导航栏 展开
4
4
  --admin-layout-left-menu-collapse: 54px; // 系统侧边导航栏 收起
5
5
  --admin-layout-main-gap: 20px; // 页面布局内间距
6
- --app-main-padding: 20px; // 页面外框内间距
6
+ --app-main-padding: 15px; // 页面外框内间距
7
7
  --dec-page-main-padding: 20px; // 页面外框内间距
8
8
  --app-container-padding: 20px; // 页面外框内间距
9
9
  --runtime-page-container-padding: 20px; // 页面卡片容器内间距
@@ -18,7 +18,7 @@
18
18
  @media (max-width: 768px) {
19
19
  :root {
20
20
  --admin-layout-main-gap: 10px;
21
- --app-main-padding: 0px;
21
+ --app-main-padding: 10px;
22
22
  --dec-page-main-padding: 0px;
23
23
  --app-container-padding: 15px;
24
24
  --runtime-page-container-padding: 10px;
@@ -14,6 +14,13 @@
14
14
  }
15
15
  }
16
16
 
17
+ .el-tree {
18
+ span.custom-tree-node {
19
+ overflow: hidden;
20
+ text-overflow: ellipsis;
21
+ }
22
+ }
23
+
17
24
  .el-form-item {
18
25
  display: flex;
19
26
  align-items: center;
@@ -58,14 +65,14 @@
58
65
  }
59
66
 
60
67
  .three-column-layout {
61
- height: calc(100vh - (var(--app-main-padding, 20px) * 2));
68
+ height: calc(100vh - (var(--app-main-padding, 15px) * 2));
62
69
 
63
70
  .el-container {
64
- gap: var(--admin-layout-main-gap, 20px);
71
+ gap: var(--app-main-padding, 15px);
65
72
  }
66
73
 
67
74
  .el-aside {
68
- padding-top: 5px;
75
+ padding: var(--app-main-padding, 15px);
69
76
  background-color: #FFFFFF;
70
77
  box-shadow: 0px 1px 8px 0px #00000019;
71
78
  border-radius: 6px;
@@ -77,7 +84,7 @@
77
84
  }
78
85
 
79
86
  .el-main {
80
- padding: 20px;
87
+ padding: var(--app-main-padding, 15px);
81
88
  border-radius: 6px;
82
89
  background: #FFFFFF;
83
90
  box-shadow: 0px 1px 8px 0px #00000019;
@@ -194,10 +194,6 @@ body .el-table colgroup.gutter {
194
194
  overflow: auto;
195
195
  }
196
196
 
197
- .form-container-bottom-button {
198
- margin-bottom: 50px;
199
- }
200
-
201
197
  .form-container .el-form .el-card {
202
198
  margin-bottom: 10px;
203
199
  }
@@ -1,6 +1,6 @@
1
1
  // 列表初始样式
2
2
  .amb-page-list-main {
3
- display: flex;
3
+ display: flex !important;
4
4
  flex-direction: column;
5
5
  align-items: stretch;
6
6
  gap: var(--layout-flex-gap, 15px);
@@ -29,14 +29,24 @@
29
29
  }
30
30
  }
31
31
  // 搜索栏目初始样式
32
- .amb-page-list-search-main {
32
+ .amb-page-list-search-main, .operation-area {
33
33
  @extend .flex-gap-15;
34
34
  flex-wrap: wrap;
35
35
 
36
- @media (max-width: 450px) {
37
- & {
38
- flex-direction: column;
39
- }
36
+ & > [style*='margin-left: 10px'] {
37
+ margin-left: 0;
38
+ }
39
+
40
+ & > .el-input__wrapper {
41
+ flex-grow: 0;
42
+ }
43
+
44
+ & > .el-select {
45
+ width: 200px;
46
+ }
47
+
48
+ .el-input-group {
49
+ width: auto;
40
50
  }
41
51
 
42
52
  .el-form {
@@ -52,5 +62,14 @@
52
62
  @extend .flex-gap-15;
53
63
  margin-left: auto;
54
64
  margin-top: auto;
65
+
66
+ & > .el-input__wrapper {
67
+ flex-grow: 0;
68
+ }
69
+ }
70
+
71
+ .btn-main {
72
+ @extend .flex-gap-15;
73
+ gap: var(--super-grid-main-btn-view-gap, 10px);
55
74
  }
56
75
  }
@@ -204,33 +204,6 @@
204
204
  margin-left: 10px;
205
205
  }
206
206
 
207
- // .el-main {
208
- // padding: 0px;
209
- // }
210
-
211
- // .el-aside {
212
- // margin-right: 20px;
213
- // }
214
-
215
- // .three-column-layout {
216
- // height: calc(100vh - 20px);
217
-
218
- // .el-aside {
219
- // margin-right: 20px;
220
- // padding-top: 20px;
221
- // background-color: #FFFFFF;
222
- // box-shadow: 0px 1px 8px 0px #00000019;
223
-
224
- // }
225
-
226
- // .el-main {
227
- // padding: 20px 0 0 20px;
228
- // border-radius: 6px;
229
- // background: #FFFFFF;
230
- // box-shadow: 0px 1px 8px 0px #00000019;
231
- // }
232
- // }
233
-
234
207
  // 清除 app-container 类样式
235
208
  .clear_app_container {
236
209
  padding: 0;
@@ -10,11 +10,6 @@
10
10
  // padding-left: 24px;
11
11
  position: relative;
12
12
  background: #F8F9FA;
13
-
14
- .nav-tab {
15
- padding-top: 5px;
16
- padding-left: 5px;
17
- }
18
13
  }
19
14
 
20
15
  // 侧边栏
@@ -1,6 +1,6 @@
1
1
  // 主题基础 默认样式
2
2
 
3
- .app-container {
3
+ .app-container:not(:has( > .three-column-layout, > .el-container)) {
4
4
  padding: var(--app-container-padding, 20px);
5
5
  border-radius: 6px;
6
6
  box-shadow: 0px 1px 8px 0px #00000019;
@@ -22,34 +22,7 @@
22
22
  }
23
23
 
24
24
  .operation-area {
25
- @extend .flex-gap-15;
26
- flex-wrap: wrap;
27
-
28
- @media (max-width: 450px) {
29
- & {
30
- flex-direction: column;
31
- }
32
- }
33
-
34
- .el-form {
35
- @extend .flex-gap-15;
36
- flex-wrap: wrap;
37
-
38
- .el-form-item {
39
- margin: 0;
40
- }
41
- }
42
-
43
- .align-right {
44
- @extend .flex-gap-15;
45
- margin-left: auto;
46
- margin-top: auto;
47
- }
48
-
49
- &:empty {
50
- display: none;
51
- }
52
- margin-bottom: 15px;
25
+ margin-bottom: 20px;
53
26
  }
54
27
 
55
28
  .operation-area-chart {
@@ -8,11 +8,6 @@
8
8
  transition: margin-left .28s;
9
9
  margin-left: 224px;
10
10
  position: relative;
11
-
12
- .nav-tab {
13
- padding-top: 5px;
14
- padding-left: 5px;
15
- }
16
11
  }
17
12
 
18
13
  // 侧边栏
@@ -205,33 +205,6 @@
205
205
  margin-left: 10px;
206
206
  }
207
207
 
208
- // .el-main {
209
- // padding: 0px;
210
- // }
211
-
212
- // .el-aside {
213
- // margin-right: 20px;
214
- // }
215
-
216
- // .three-column-layout {
217
- // height: calc(100vh - 20px);
218
-
219
- // .el-aside {
220
- // margin-right: 20px;
221
- // padding-top: 20px;
222
- // background-color: #FFFFFF;
223
- // box-shadow: 0px 1px 8px 0px #00000019;
224
-
225
- // }
226
-
227
- // .el-main {
228
- // padding: 20px 0 0 20px;
229
- // border-radius: 6px;
230
- // background: #FFFFFF;
231
- // box-shadow: 0px 1px 8px 0px #00000019;
232
- // }
233
- // }
234
-
235
208
  // 清除 app-container 类样式
236
209
  .clear_app_container {
237
210
  padding: 0;
@@ -11,11 +11,6 @@
11
11
  // padding-left: 24px;
12
12
  position: relative;
13
13
  background: #F8F9FA;
14
-
15
- .nav-tab {
16
- padding-top: 5px;
17
- padding-left: 5px;
18
- }
19
14
  }
20
15
 
21
16
  // 侧边栏
@@ -205,33 +205,6 @@
205
205
  margin-left: 10px;
206
206
  }
207
207
 
208
- // .el-main {
209
- // padding: 0px;
210
- // }
211
-
212
- // .el-aside {
213
- // margin-right: 20px;
214
- // }
215
-
216
- // .three-column-layout {
217
- // height: calc(100vh - 20px);
218
-
219
- // .el-aside {
220
- // margin-right: 20px;
221
- // padding-top: 20px;
222
- // background-color: #FFFFFF;
223
- // box-shadow: 0px 1px 8px 0px #00000019;
224
-
225
- // }
226
-
227
- // .el-main {
228
- // padding: 20px 0 0 20px;
229
- // border-radius: 6px;
230
- // background: #FFFFFF;
231
- // box-shadow: 0px 1px 8px 0px #00000019;
232
- // }
233
- // }
234
-
235
208
  // 清除 app-container 类样式
236
209
  .clear_app_container {
237
210
  padding: 0;
@@ -11,11 +11,6 @@
11
11
  // padding-left: 24px;
12
12
  position: relative;
13
13
  background: #F8F9FA;
14
-
15
- .nav-tab {
16
- padding-top: 5px;
17
- padding-left: 5px;
18
- }
19
14
  }
20
15
 
21
16
  // 侧边栏