@agile-team/wl-skills-kit 2.3.3 → 2.3.5

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 (91) hide show
  1. package/CHANGELOG.md +24 -23
  2. package/README.md +15 -146
  3. package/files/.cursor/mcp.json +8 -0
  4. package/files/.github/guides/README.md +13 -13
  5. package/files/.github/guides/architecture.md +555 -555
  6. package/files/.github/guides/mcp-setup.md +109 -0
  7. package/files/.github/guides/usage.md +184 -176
  8. package/files/.github/reports/README.md +65 -65
  9. package/files/.github/reports/SYS_DICT_INFO.md +50 -50
  10. package/files/.github/reports/SYS_MENU_INFO.md +247 -247
  11. package/files/.github/reports/SYS_PERMISSION_INFO.md +20 -20
  12. package/files/.github/reports//347/273/204/344/273/266/346/217/220/345/217/226/345/273/272/350/256/256.md +33 -33
  13. package/files/.github/reports//350/247/204/350/214/203/345/256/241/346/237/245/346/212/245/345/221/212.md +44 -44
  14. package/files/.github/skills/_compat/README.md +108 -108
  15. package/files/.github/skills/_compat/editors.json +7 -0
  16. package/files/.github/skills/_compat/headers/agents.txt +8 -8
  17. package/files/.github/skills/_compat/headers/claude-code.txt +7 -7
  18. package/files/.github/skills/_compat/headers/cline.txt +7 -7
  19. package/files/.github/skills/_compat/headers/cursor-mdc.txt +16 -16
  20. package/files/.github/skills/_compat/headers/cursor-rules.txt +7 -7
  21. package/files/.github/skills/_compat/headers/github-copilot.txt +1 -1
  22. package/files/.github/skills/_compat/headers/kiro.txt +10 -10
  23. package/files/.github/skills/_compat/headers/qoder.txt +8 -0
  24. package/files/.github/skills/_compat/headers/trae.txt +11 -11
  25. package/files/.github/skills/_compat/headers/windsurf.txt +7 -7
  26. package/files/.github/skills/_registry.md +81 -81
  27. package/files/.github/skills/core/api-contract/SKILL.md +344 -344
  28. package/files/.github/skills/core/api-contract/USAGE.md +110 -110
  29. package/files/.github/skills/core/convention-audit/SKILL.md +189 -189
  30. package/files/.github/skills/core/convention-audit/USAGE.md +99 -99
  31. package/files/.github/skills/core/page-codegen/SKILL.md +973 -973
  32. package/files/.github/skills/core/page-codegen/USAGE.md +102 -102
  33. package/files/.github/skills/core/page-codegen/templates/_index.md +46 -46
  34. package/files/.github/skills/core/page-codegen/templates/domains/_CONTRIBUTING.md +107 -107
  35. package/files/.github/skills/core/page-codegen/templates/domains/produce/TPL-OPERATION-STATION.md +442 -442
  36. package/files/.github/skills/core/page-codegen/templates/domains/sale/README.md +26 -26
  37. package/files/.github/skills/core/page-codegen/templates/universal/TPL-CHANGE-HISTORY.md +276 -276
  38. package/files/.github/skills/core/page-codegen/templates/universal/TPL-DETAIL-TABS.md +1145 -1145
  39. package/files/.github/skills/core/page-codegen/templates/universal/TPL-DRIVEN.md +309 -309
  40. package/files/.github/skills/core/page-codegen/templates/universal/TPL-FORM-ROUTE.md +436 -436
  41. package/files/.github/skills/core/page-codegen/templates/universal/TPL-LIST.md +191 -191
  42. package/files/.github/skills/core/page-codegen/templates/universal/TPL-MASTER-DETAIL.md +148 -148
  43. package/files/.github/skills/core/page-codegen/templates/universal/TPL-RECORD-FORM.md +376 -376
  44. package/files/.github/skills/core/page-codegen/templates/universal/TPL-TREE-LIST.md +186 -186
  45. package/files/.github/skills/core/prototype-scan/SKILL.md +498 -498
  46. package/files/.github/skills/core/prototype-scan/USAGE.md +95 -95
  47. package/files/.github/skills/core/template-extract/SKILL.md +139 -139
  48. package/files/.github/skills/core/template-extract/USAGE.md +93 -93
  49. package/files/.github/skills/domain/README.md +51 -51
  50. package/files/.github/skills/sync/menu-sync/SKILL.md +263 -263
  51. package/files/.github/skills/sync/menu-sync/USAGE.md +104 -104
  52. package/files/.github/skills/sync/menu-sync/env/env.local.json +7 -7
  53. package/files/.github/skills/sync/menu-sync/env/guide.md +99 -99
  54. package/files/.github/skills/sync/permission-sync/SKILL.draft.md +91 -91
  55. package/files/.github/standards/01-toolchain.md +57 -57
  56. package/files/.github/standards/02-code-structure.md +111 -111
  57. package/files/.github/standards/03-comments.md +53 -53
  58. package/files/.github/standards/04-coding-basics.md +33 -33
  59. package/files/.github/standards/05-logging.md +38 -38
  60. package/files/.github/standards/06-security.md +44 -44
  61. package/files/.github/standards/07-config.md +52 -52
  62. package/files/.github/standards/08-git.md +60 -60
  63. package/files/.github/standards/09-typescript.md +71 -71
  64. package/files/.github/standards/10-pinia.md +57 -57
  65. package/files/.github/standards/11-form-validation.md +81 -81
  66. package/files/.github/standards/12-base-table.md +153 -153
  67. package/files/.github/standards/13-platform-components.md +123 -123
  68. package/files/.github/standards/index.md +89 -89
  69. package/files/.kiro/settings/mcp.json +8 -0
  70. package/files/.mcp.json +8 -0
  71. package/files/.vscode/mcp.json +9 -0
  72. package/files/demo/produce/aiflow/mmwr-customer-apply-change-history/data.ts +196 -196
  73. package/files/demo/produce/aiflow/mmwr-customer-apply-change-history/index.scss +150 -150
  74. package/files/demo/produce/aiflow/mmwr-customer-apply-change-history/index.vue +79 -79
  75. package/files/docs/jh-date-range.md +257 -257
  76. package/files/docs/jh-date.md +222 -222
  77. package/files/docs/jh-dept-picker.md +190 -190
  78. package/files/docs/jh-drag-row.md +590 -590
  79. package/files/docs/jh-file-upload.md +216 -216
  80. package/files/docs/jh-picker.md +218 -218
  81. package/files/docs/jh-select.md +148 -148
  82. package/files/docs/jh-text.md +248 -248
  83. package/files/docs/jh-user-picker.md +197 -197
  84. package/files/src/components/global/C_RightToolbar/data.ts +228 -228
  85. package/files/src/components/global/C_RightToolbar/index.scss +44 -44
  86. package/files/src/components/global/C_Splitter/index.scss +61 -61
  87. package/files/src/components/global/C_SvgIcon/index.scss +15 -15
  88. package/files/src/components/global/C_TagStatus/index.scss +20 -20
  89. package/files/src/components/global/C_Tree/data.ts +61 -61
  90. package/files/src/components/local/c_listModal/index.scss +4 -4
  91. package/package.json +1 -1
@@ -1,228 +1,228 @@
1
- import { ref, computed, watch, nextTick } from "vue";
2
- import { postAction, getAction } from "@jhlc/common-core/src/api/action";
3
- import Sortable from "sortablejs";
4
- import { deepClone } from "@/util";
5
- import { useI18n } from "vue-i18n";
6
-
7
- // ===== 类型定义 =====
8
- export interface RightToolbarProps {
9
- proVisible?: boolean;
10
- showSearch?: boolean;
11
- columns?: any[];
12
- tableId?: string;
13
- initialColumns?: any[];
14
- id?: string;
15
- propsValue?: any[];
16
- disabled?: boolean;
17
- showRefreshTool?: boolean;
18
- showSearchTool?: boolean;
19
- showColumnTool?: boolean;
20
- }
21
-
22
- // ===== 组件逻辑 =====
23
- export function createRightToolbar(
24
- props: RightToolbarProps,
25
- emits: (event: string, ...args: any[]) => void,
26
- ) {
27
- const { t } = useI18n();
28
-
29
- const transferRef = ref<any>(null);
30
- const data = ref<any[]>([]);
31
- const title = ref(t("设置显示字段"));
32
- const open = ref(false);
33
- const showFields = ref("");
34
- const hideFields = ref("");
35
- const defaultColumns = ref<any[]>([]);
36
- const columnId = ref("");
37
- const emitTemp = ref<any[]>([]);
38
- const submitLoading = ref(false);
39
-
40
- const modelValue = ref<any[]>([]);
41
- watch(
42
- () => props.propsValue,
43
- (newVal) => {
44
- modelValue.value = newVal ?? [];
45
- },
46
- { immediate: true },
47
- );
48
-
49
- const columnsProp = computed(() => props.columns);
50
- const showSearchProp = computed(() => props.showSearch);
51
-
52
- const temp = computed(() => data.value.filter((item) => item.visible));
53
-
54
- // 搜索
55
- function toggleSearch() {
56
- emits("update:showSearch", !props.showSearch);
57
- }
58
-
59
- // 刷新
60
- function refresh() {
61
- emits("queryTable");
62
- }
63
-
64
- // 关闭弹窗
65
- const closeDialog = () => {
66
- initColumns();
67
- };
68
-
69
- // 穿梭变化
70
- function dataChange(val: any[]) {
71
- if (val) {
72
- data.value.forEach((item) => {
73
- const index = val.findIndex((ele) => ele === item.key);
74
- item.visible = index === -1;
75
- });
76
- }
77
- }
78
-
79
- // 打开显隐列dialog
80
- function showColumn() {
81
- open.value = true;
82
- data.value = [];
83
- defaultColumns.value = [];
84
- props.columns?.forEach((item) => {
85
- defaultColumns.value.push(deepClone(item));
86
- data.value.push(deepClone(item));
87
- });
88
- nextTick(() => {
89
- const transfer = transferRef.value.$el;
90
- const leftPanel = transfer
91
- .getElementsByClassName("el-transfer-panel")[0]
92
- .getElementsByClassName("el-transfer-panel__body")[0];
93
- const leftEl = leftPanel.getElementsByClassName(
94
- "el-transfer-panel__list",
95
- )[0];
96
- Sortable.create(leftEl, {
97
- onEnd: (evt: any) => {
98
- const { oldIndex, newIndex } = evt;
99
- const visible = data.value.filter((item) => item.visible);
100
- const [moved] = visible.splice(oldIndex, 1);
101
- visible.splice(newIndex, 0, moved);
102
- const hidden = data.value.filter((item) => !item.visible);
103
- data.value = [...visible, ...hidden];
104
- },
105
- });
106
- });
107
- }
108
-
109
- // 恢复工具
110
- function recoverTool(recoverData: any[]) {
111
- const dataTemp: any[] = [];
112
- const modelValueTemp: any[] = [];
113
- recoverData.forEach((item) => {
114
- dataTemp.push(deepClone(item));
115
- if (!item.visible) modelValueTemp.push(item.key);
116
- });
117
- data.value = dataTemp;
118
- modelValue.value = modelValueTemp;
119
- }
120
-
121
- function initColumns() {
122
- recoverTool(defaultColumns.value);
123
- }
124
-
125
- function clearValue() {
126
- recoverTool(props.initialColumns ?? []);
127
- }
128
-
129
- function cancelBtn() {
130
- initColumns();
131
- open.value = false;
132
- }
133
-
134
- function submitBtn() {
135
- showFields.value = "";
136
- hideFields.value = "";
137
- temp.value.forEach((item) => {
138
- showFields.value += `${item.key},`;
139
- });
140
- hideFields.value = modelValue.value.join();
141
- const paramsList = {
142
- id: columnId.value || props.id,
143
- tableId: props.tableId,
144
- showFields: showFields.value,
145
- hideFields: hideFields.value,
146
- };
147
- submitLoading.value = true;
148
- postAction("system/pageShowFields/saveOrUpdate", paramsList)
149
- .then((res: any) => {
150
- temp.value.forEach((item) => emitTemp.value.push(item));
151
- data.value.forEach((item) => {
152
- if (!item.visible) emitTemp.value.push(item);
153
- });
154
- columnId.value = res.data.id;
155
- emits("update:columns", emitTemp.value);
156
- emits("update:propsValue", modelValue.value);
157
- emitTemp.value = [];
158
- })
159
- .catch(() => initColumns())
160
- .finally(() => {
161
- submitLoading.value = false;
162
- open.value = false;
163
- });
164
- }
165
-
166
- function getColumns(columnsInfo: any) {
167
- const _columnsInfo = deepClone(columnsInfo);
168
- _columnsInfo.propsValue = [];
169
- return getAction(
170
- `/system/pageShowFields/getByTableIdAndUserNo?tableId=${_columnsInfo.tableId}`,
171
- ).then((res: any) => {
172
- if (res.data) {
173
- _columnsInfo.id = res.data.id;
174
- let showArr: string[] | undefined;
175
- if (res.data.showFields) showArr = res.data.showFields.split(",");
176
- let hideArr: string[] | undefined;
177
- if (res.data.hideFields) hideArr = res.data.hideFields.split(",");
178
-
179
- let flag: any[] = [];
180
- if (showArr) {
181
- flag = showArr.reduce((acc: any[], key: string) => {
182
- const value = _columnsInfo.columns.find((v: any) => v.key === key);
183
- if (value) acc.push(value);
184
- return acc;
185
- }, []);
186
- }
187
- const result: any[] = [...new Set(flag.concat(_columnsInfo.columns))];
188
- _columnsInfo.columns = result;
189
-
190
- _columnsInfo.columns.forEach((item: any) => {
191
- if (showArr) {
192
- item.visible = showArr.includes(item.key) ? true : item.visible;
193
- }
194
- if (hideArr) {
195
- item.visible = hideArr.includes(item.key) ? false : item.visible;
196
- }
197
- });
198
-
199
- if (hideArr) {
200
- hideArr.forEach((item: string) => _columnsInfo.propsValue.push(item));
201
- }
202
- return _columnsInfo;
203
- }
204
- });
205
- }
206
-
207
- return {
208
- transferRef,
209
- data,
210
- title,
211
- open,
212
- modelValue,
213
- columnsProp,
214
- showSearchProp,
215
- temp,
216
- submitLoading,
217
- toggleSearch,
218
- refresh,
219
- closeDialog,
220
- dataChange,
221
- showColumn,
222
- initColumns,
223
- clearValue,
224
- cancelBtn,
225
- submitBtn,
226
- getColumns,
227
- };
228
- }
1
+ import { ref, computed, watch, nextTick } from "vue";
2
+ import { postAction, getAction } from "@jhlc/common-core/src/api/action";
3
+ import Sortable from "sortablejs";
4
+ import { deepClone } from "@/util";
5
+ import { useI18n } from "vue-i18n";
6
+
7
+ // ===== 类型定义 =====
8
+ export interface RightToolbarProps {
9
+ proVisible?: boolean;
10
+ showSearch?: boolean;
11
+ columns?: any[];
12
+ tableId?: string;
13
+ initialColumns?: any[];
14
+ id?: string;
15
+ propsValue?: any[];
16
+ disabled?: boolean;
17
+ showRefreshTool?: boolean;
18
+ showSearchTool?: boolean;
19
+ showColumnTool?: boolean;
20
+ }
21
+
22
+ // ===== 组件逻辑 =====
23
+ export function createRightToolbar(
24
+ props: RightToolbarProps,
25
+ emits: (event: string, ...args: any[]) => void,
26
+ ) {
27
+ const { t } = useI18n();
28
+
29
+ const transferRef = ref<any>(null);
30
+ const data = ref<any[]>([]);
31
+ const title = ref(t("设置显示字段"));
32
+ const open = ref(false);
33
+ const showFields = ref("");
34
+ const hideFields = ref("");
35
+ const defaultColumns = ref<any[]>([]);
36
+ const columnId = ref("");
37
+ const emitTemp = ref<any[]>([]);
38
+ const submitLoading = ref(false);
39
+
40
+ const modelValue = ref<any[]>([]);
41
+ watch(
42
+ () => props.propsValue,
43
+ (newVal) => {
44
+ modelValue.value = newVal ?? [];
45
+ },
46
+ { immediate: true },
47
+ );
48
+
49
+ const columnsProp = computed(() => props.columns);
50
+ const showSearchProp = computed(() => props.showSearch);
51
+
52
+ const temp = computed(() => data.value.filter((item) => item.visible));
53
+
54
+ // 搜索
55
+ function toggleSearch() {
56
+ emits("update:showSearch", !props.showSearch);
57
+ }
58
+
59
+ // 刷新
60
+ function refresh() {
61
+ emits("queryTable");
62
+ }
63
+
64
+ // 关闭弹窗
65
+ const closeDialog = () => {
66
+ initColumns();
67
+ };
68
+
69
+ // 穿梭变化
70
+ function dataChange(val: any[]) {
71
+ if (val) {
72
+ data.value.forEach((item) => {
73
+ const index = val.findIndex((ele) => ele === item.key);
74
+ item.visible = index === -1;
75
+ });
76
+ }
77
+ }
78
+
79
+ // 打开显隐列dialog
80
+ function showColumn() {
81
+ open.value = true;
82
+ data.value = [];
83
+ defaultColumns.value = [];
84
+ props.columns?.forEach((item) => {
85
+ defaultColumns.value.push(deepClone(item));
86
+ data.value.push(deepClone(item));
87
+ });
88
+ nextTick(() => {
89
+ const transfer = transferRef.value.$el;
90
+ const leftPanel = transfer
91
+ .getElementsByClassName("el-transfer-panel")[0]
92
+ .getElementsByClassName("el-transfer-panel__body")[0];
93
+ const leftEl = leftPanel.getElementsByClassName(
94
+ "el-transfer-panel__list",
95
+ )[0];
96
+ Sortable.create(leftEl, {
97
+ onEnd: (evt: any) => {
98
+ const { oldIndex, newIndex } = evt;
99
+ const visible = data.value.filter((item) => item.visible);
100
+ const [moved] = visible.splice(oldIndex, 1);
101
+ visible.splice(newIndex, 0, moved);
102
+ const hidden = data.value.filter((item) => !item.visible);
103
+ data.value = [...visible, ...hidden];
104
+ },
105
+ });
106
+ });
107
+ }
108
+
109
+ // 恢复工具
110
+ function recoverTool(recoverData: any[]) {
111
+ const dataTemp: any[] = [];
112
+ const modelValueTemp: any[] = [];
113
+ recoverData.forEach((item) => {
114
+ dataTemp.push(deepClone(item));
115
+ if (!item.visible) modelValueTemp.push(item.key);
116
+ });
117
+ data.value = dataTemp;
118
+ modelValue.value = modelValueTemp;
119
+ }
120
+
121
+ function initColumns() {
122
+ recoverTool(defaultColumns.value);
123
+ }
124
+
125
+ function clearValue() {
126
+ recoverTool(props.initialColumns ?? []);
127
+ }
128
+
129
+ function cancelBtn() {
130
+ initColumns();
131
+ open.value = false;
132
+ }
133
+
134
+ function submitBtn() {
135
+ showFields.value = "";
136
+ hideFields.value = "";
137
+ temp.value.forEach((item) => {
138
+ showFields.value += `${item.key},`;
139
+ });
140
+ hideFields.value = modelValue.value.join();
141
+ const paramsList = {
142
+ id: columnId.value || props.id,
143
+ tableId: props.tableId,
144
+ showFields: showFields.value,
145
+ hideFields: hideFields.value,
146
+ };
147
+ submitLoading.value = true;
148
+ postAction("system/pageShowFields/saveOrUpdate", paramsList)
149
+ .then((res: any) => {
150
+ temp.value.forEach((item) => emitTemp.value.push(item));
151
+ data.value.forEach((item) => {
152
+ if (!item.visible) emitTemp.value.push(item);
153
+ });
154
+ columnId.value = res.data.id;
155
+ emits("update:columns", emitTemp.value);
156
+ emits("update:propsValue", modelValue.value);
157
+ emitTemp.value = [];
158
+ })
159
+ .catch(() => initColumns())
160
+ .finally(() => {
161
+ submitLoading.value = false;
162
+ open.value = false;
163
+ });
164
+ }
165
+
166
+ function getColumns(columnsInfo: any) {
167
+ const _columnsInfo = deepClone(columnsInfo);
168
+ _columnsInfo.propsValue = [];
169
+ return getAction(
170
+ `/system/pageShowFields/getByTableIdAndUserNo?tableId=${_columnsInfo.tableId}`,
171
+ ).then((res: any) => {
172
+ if (res.data) {
173
+ _columnsInfo.id = res.data.id;
174
+ let showArr: string[] | undefined;
175
+ if (res.data.showFields) showArr = res.data.showFields.split(",");
176
+ let hideArr: string[] | undefined;
177
+ if (res.data.hideFields) hideArr = res.data.hideFields.split(",");
178
+
179
+ let flag: any[] = [];
180
+ if (showArr) {
181
+ flag = showArr.reduce((acc: any[], key: string) => {
182
+ const value = _columnsInfo.columns.find((v: any) => v.key === key);
183
+ if (value) acc.push(value);
184
+ return acc;
185
+ }, []);
186
+ }
187
+ const result: any[] = [...new Set(flag.concat(_columnsInfo.columns))];
188
+ _columnsInfo.columns = result;
189
+
190
+ _columnsInfo.columns.forEach((item: any) => {
191
+ if (showArr) {
192
+ item.visible = showArr.includes(item.key) ? true : item.visible;
193
+ }
194
+ if (hideArr) {
195
+ item.visible = hideArr.includes(item.key) ? false : item.visible;
196
+ }
197
+ });
198
+
199
+ if (hideArr) {
200
+ hideArr.forEach((item: string) => _columnsInfo.propsValue.push(item));
201
+ }
202
+ return _columnsInfo;
203
+ }
204
+ });
205
+ }
206
+
207
+ return {
208
+ transferRef,
209
+ data,
210
+ title,
211
+ open,
212
+ modelValue,
213
+ columnsProp,
214
+ showSearchProp,
215
+ temp,
216
+ submitLoading,
217
+ toggleSearch,
218
+ refresh,
219
+ closeDialog,
220
+ dataChange,
221
+ showColumn,
222
+ initColumns,
223
+ clearValue,
224
+ cancelBtn,
225
+ submitBtn,
226
+ getColumns,
227
+ };
228
+ }
@@ -1,44 +1,44 @@
1
- :deep(.rightToolBarDialog .el-dialog-body) {
2
- display: flex !important;
3
- justify-content: center !important;
4
- }
5
- :deep(.el-transfer__button) {
6
- display: block;
7
- }
8
-
9
- :deep(.el-transfer__button:first-child) {
10
- margin-bottom: 10px;
11
- }
12
- :deep(.el-transfer__button:nth-child(2)) {
13
- margin-left: 0px !important;
14
- }
15
-
16
- .my-el-transfer {
17
- text-align: center;
18
- }
19
-
20
- :deep(
21
- .el-transfer-panel
22
- .el-transfer-panel__header
23
- .el-checkbox
24
- .el-checkbox__label
25
- span
26
- ) {
27
- position: static;
28
- }
29
-
30
- :deep(.el-transfer-panel__footer button) {
31
- position: absolute;
32
- right: 5px;
33
- top: 12px;
34
- }
35
-
36
- :deep(.el-transfer-panel:first-child .el-checkbox__label) {
37
- cursor: move !important;
38
- }
39
- :deep(.el-transfer-panel) {
40
- width: 40%;
41
- }
42
- :deep(.el-transfer__buttons) {
43
- width: 20%;
44
- }
1
+ :deep(.rightToolBarDialog .el-dialog-body) {
2
+ display: flex !important;
3
+ justify-content: center !important;
4
+ }
5
+ :deep(.el-transfer__button) {
6
+ display: block;
7
+ }
8
+
9
+ :deep(.el-transfer__button:first-child) {
10
+ margin-bottom: 10px;
11
+ }
12
+ :deep(.el-transfer__button:nth-child(2)) {
13
+ margin-left: 0px !important;
14
+ }
15
+
16
+ .my-el-transfer {
17
+ text-align: center;
18
+ }
19
+
20
+ :deep(
21
+ .el-transfer-panel
22
+ .el-transfer-panel__header
23
+ .el-checkbox
24
+ .el-checkbox__label
25
+ span
26
+ ) {
27
+ position: static;
28
+ }
29
+
30
+ :deep(.el-transfer-panel__footer button) {
31
+ position: absolute;
32
+ right: 5px;
33
+ top: 12px;
34
+ }
35
+
36
+ :deep(.el-transfer-panel:first-child .el-checkbox__label) {
37
+ cursor: move !important;
38
+ }
39
+ :deep(.el-transfer-panel) {
40
+ width: 40%;
41
+ }
42
+ :deep(.el-transfer__buttons) {
43
+ width: 20%;
44
+ }
@@ -1,61 +1,61 @@
1
- .my-splitter-container {
2
- display: flex;
3
- width: 100%;
4
- height: 100%;
5
- overflow: hidden;
6
- }
7
-
8
- .is-horizontal {
9
- flex-direction: row;
10
- }
11
- .is-vertical {
12
- flex-direction: column;
13
- }
14
-
15
- .splitter-item {
16
- overflow: auto;
17
- }
18
-
19
- .splitter-trigger {
20
- background-color: #f0f2f5;
21
- display: flex;
22
- align-items: center;
23
- justify-content: center;
24
- transition: background-color 0.2s;
25
- z-index: 10;
26
- }
27
-
28
- .splitter-trigger:hover {
29
- background-color: #409eff;
30
- }
31
-
32
- /* 水平线 */
33
- .is-horizontal > .splitter-trigger {
34
- width: 4px;
35
- cursor: col-resize;
36
- }
37
- .is-horizontal .trigger-line {
38
- width: 1px;
39
- height: 20px;
40
- background: #dcdfe6;
41
- }
42
-
43
- /* 垂直线 */
44
- .is-vertical > .splitter-trigger {
45
- height: 8px;
46
- cursor: row-resize;
47
- background-color: #f5f5f5;
48
- flex-shrink: 0;
49
- display: flex;
50
- align-items: center;
51
- justify-content: center;
52
- }
53
- .is-vertical .trigger-line {
54
- width: 30px;
55
- height: 3px;
56
- background: #d9d9d9;
57
- border-radius: 2px;
58
- }
59
- .is-vertical > .splitter-trigger:hover .trigger-line {
60
- background: #409eff;
61
- }
1
+ .my-splitter-container {
2
+ display: flex;
3
+ width: 100%;
4
+ height: 100%;
5
+ overflow: hidden;
6
+ }
7
+
8
+ .is-horizontal {
9
+ flex-direction: row;
10
+ }
11
+ .is-vertical {
12
+ flex-direction: column;
13
+ }
14
+
15
+ .splitter-item {
16
+ overflow: auto;
17
+ }
18
+
19
+ .splitter-trigger {
20
+ background-color: #f0f2f5;
21
+ display: flex;
22
+ align-items: center;
23
+ justify-content: center;
24
+ transition: background-color 0.2s;
25
+ z-index: 10;
26
+ }
27
+
28
+ .splitter-trigger:hover {
29
+ background-color: #409eff;
30
+ }
31
+
32
+ /* 水平线 */
33
+ .is-horizontal > .splitter-trigger {
34
+ width: 4px;
35
+ cursor: col-resize;
36
+ }
37
+ .is-horizontal .trigger-line {
38
+ width: 1px;
39
+ height: 20px;
40
+ background: #dcdfe6;
41
+ }
42
+
43
+ /* 垂直线 */
44
+ .is-vertical > .splitter-trigger {
45
+ height: 8px;
46
+ cursor: row-resize;
47
+ background-color: #f5f5f5;
48
+ flex-shrink: 0;
49
+ display: flex;
50
+ align-items: center;
51
+ justify-content: center;
52
+ }
53
+ .is-vertical .trigger-line {
54
+ width: 30px;
55
+ height: 3px;
56
+ background: #d9d9d9;
57
+ border-radius: 2px;
58
+ }
59
+ .is-vertical > .splitter-trigger:hover .trigger-line {
60
+ background: #409eff;
61
+ }