@agile-team/wl-skills-kit 2.1.2 → 2.1.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.
Files changed (80) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +6 -5
  3. package/bin/wl-skills.js +35 -1
  4. package/files/.github/guides/README.md +13 -13
  5. package/files/.github/guides/architecture.md +555 -555
  6. package/files/.github/guides/usage.md +166 -166
  7. package/files/.github/reports/README.md +65 -65
  8. package/files/.github/reports/SYS_DICT_INFO.md +19 -19
  9. package/files/.github/reports/SYS_MENU_INFO.md +247 -247
  10. package/files/.github/reports/SYS_PERMISSION_INFO.md +20 -20
  11. 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
  12. 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
  13. package/files/.github/skills/_compat/README.md +108 -108
  14. package/files/.github/skills/_compat/headers/agents.txt +8 -8
  15. package/files/.github/skills/_compat/headers/claude-code.txt +7 -7
  16. package/files/.github/skills/_compat/headers/cline.txt +7 -7
  17. package/files/.github/skills/_compat/headers/cursor-mdc.txt +16 -16
  18. package/files/.github/skills/_compat/headers/cursor-rules.txt +7 -7
  19. package/files/.github/skills/_compat/headers/github-copilot.txt +1 -1
  20. package/files/.github/skills/_compat/headers/kiro.txt +10 -10
  21. package/files/.github/skills/_compat/headers/trae.txt +11 -11
  22. package/files/.github/skills/_compat/headers/windsurf.txt +7 -7
  23. package/files/.github/skills/_registry.md +81 -81
  24. package/files/.github/skills/core/api-contract/SKILL.md +344 -344
  25. package/files/.github/skills/core/api-contract/USAGE.md +110 -110
  26. package/files/.github/skills/core/convention-audit/SKILL.md +189 -189
  27. package/files/.github/skills/core/convention-audit/USAGE.md +99 -99
  28. package/files/.github/skills/core/page-codegen/SKILL.md +973 -973
  29. package/files/.github/skills/core/page-codegen/USAGE.md +102 -102
  30. package/files/.github/skills/core/page-codegen/templates/_index.md +46 -46
  31. package/files/.github/skills/core/page-codegen/templates/domains/_CONTRIBUTING.md +107 -107
  32. package/files/.github/skills/core/page-codegen/templates/domains/produce/TPL-OPERATION-STATION.md +442 -442
  33. package/files/.github/skills/core/page-codegen/templates/domains/sale/README.md +26 -26
  34. package/files/.github/skills/core/page-codegen/templates/universal/TPL-CHANGE-HISTORY.md +276 -276
  35. package/files/.github/skills/core/page-codegen/templates/universal/TPL-DETAIL-TABS.md +1145 -1145
  36. package/files/.github/skills/core/page-codegen/templates/universal/TPL-DRIVEN.md +124 -124
  37. package/files/.github/skills/core/page-codegen/templates/universal/TPL-FORM-ROUTE.md +436 -436
  38. package/files/.github/skills/core/page-codegen/templates/universal/TPL-LIST.md +191 -191
  39. package/files/.github/skills/core/page-codegen/templates/universal/TPL-MASTER-DETAIL.md +148 -148
  40. package/files/.github/skills/core/page-codegen/templates/universal/TPL-RECORD-FORM.md +371 -371
  41. package/files/.github/skills/core/page-codegen/templates/universal/TPL-TREE-LIST.md +186 -186
  42. package/files/.github/skills/core/prototype-scan/SKILL.md +498 -498
  43. package/files/.github/skills/core/prototype-scan/USAGE.md +95 -95
  44. package/files/.github/skills/core/template-extract/SKILL.md +139 -139
  45. package/files/.github/skills/core/template-extract/USAGE.md +93 -93
  46. package/files/.github/skills/domain/README.md +51 -51
  47. package/files/.github/skills/ops/code-fix/SKILL.draft.md +108 -108
  48. package/files/.github/skills/sync/dict-sync/SKILL.draft.md +100 -100
  49. package/files/.github/skills/sync/menu-sync/SKILL.md +258 -258
  50. package/files/.github/skills/sync/menu-sync/USAGE.md +104 -104
  51. package/files/.github/skills/sync/menu-sync/env/env.local.json +6 -6
  52. package/files/.github/skills/sync/menu-sync/env/guide.md +83 -83
  53. package/files/.github/skills/sync/permission-sync/SKILL.draft.md +91 -91
  54. package/files/.github/standards/01-toolchain.md +57 -57
  55. package/files/.github/standards/02-code-structure.md +111 -111
  56. package/files/.github/standards/03-comments.md +53 -53
  57. package/files/.github/standards/04-coding-basics.md +33 -33
  58. package/files/.github/standards/05-logging.md +38 -38
  59. package/files/.github/standards/06-security.md +44 -44
  60. package/files/.github/standards/07-config.md +52 -52
  61. package/files/.github/standards/08-git.md +60 -60
  62. package/files/.github/standards/09-typescript.md +71 -71
  63. package/files/.github/standards/10-pinia.md +57 -57
  64. package/files/.github/standards/11-form-validation.md +81 -81
  65. package/files/.github/standards/12-base-table.md +116 -116
  66. package/files/.github/standards/13-platform-components.md +123 -123
  67. package/files/.github/standards/index.md +89 -89
  68. package/files/demo/produce/aiflow/mmwr-customer-apply-change-history/data.ts +196 -196
  69. package/files/demo/produce/aiflow/mmwr-customer-apply-change-history/index.scss +150 -150
  70. package/files/demo/produce/aiflow/mmwr-customer-apply-change-history/index.vue +79 -79
  71. package/files/docs/jh-date-range.md +257 -257
  72. package/files/docs/jh-date.md +222 -222
  73. package/files/docs/jh-dept-picker.md +190 -190
  74. package/files/docs/jh-drag-row.md +590 -590
  75. package/files/docs/jh-file-upload.md +216 -216
  76. package/files/docs/jh-picker.md +218 -218
  77. package/files/docs/jh-select.md +148 -148
  78. package/files/docs/jh-text.md +248 -248
  79. package/files/docs/jh-user-picker.md +197 -197
  80. package/package.json +2 -4
@@ -1,150 +1,150 @@
1
- .change-history-page {
2
- display: flex !important;
3
- padding: 0 !important;
4
- height: 100%;
5
- overflow: hidden;
6
-
7
- /* ─── 左侧:变更记录面板 ─── */
8
- .history-panel {
9
- width: 200px;
10
- flex-shrink: 0;
11
- border-right: 1px solid #e4e7ed;
12
- display: flex;
13
- flex-direction: column;
14
- overflow: hidden;
15
- background: #fff;
16
-
17
- &__header {
18
- padding: 12px 16px;
19
- font-size: 14px;
20
- font-weight: 600;
21
- color: #303133;
22
- border-bottom: 1px solid #e4e7ed;
23
- flex-shrink: 0;
24
- }
25
-
26
- &__list {
27
- flex: 1;
28
- overflow-y: auto;
29
- padding: 4px 0;
30
- }
31
- }
32
-
33
- .history-card {
34
- display: flex;
35
- align-items: flex-start;
36
- padding: 10px 16px;
37
- cursor: pointer;
38
- border-left: 3px solid transparent;
39
- transition: background 0.15s;
40
- gap: 8px;
41
-
42
- &:hover {
43
- background: #f5f7fa;
44
- }
45
-
46
- &.is-active {
47
- background: #ecf5ff;
48
- border-left-color: #409eff;
49
- }
50
-
51
- &__dot {
52
- width: 8px;
53
- height: 8px;
54
- border-radius: 50%;
55
- margin-top: 5px;
56
- flex-shrink: 0;
57
-
58
- &.is-add {
59
- background: #409eff;
60
- }
61
- &.is-change {
62
- background: #e6a23c;
63
- }
64
- }
65
-
66
- &__content {
67
- flex: 1;
68
- min-width: 0;
69
- }
70
-
71
- &__type {
72
- font-size: 13px;
73
- font-weight: 500;
74
- color: #303133;
75
- line-height: 18px;
76
- }
77
-
78
- &__date {
79
- font-size: 12px;
80
- color: #909399;
81
- line-height: 18px;
82
- }
83
-
84
- &__person {
85
- font-size: 12px;
86
- color: #606266;
87
- line-height: 18px;
88
- }
89
- }
90
-
91
- .history-empty {
92
- padding: 32px 16px;
93
- text-align: center;
94
- color: #909399;
95
- font-size: 13px;
96
- }
97
-
98
- /* ─── 右侧:变更详情面板 ─── */
99
- .detail-panel {
100
- flex: 1;
101
- overflow: hidden;
102
- display: flex;
103
- flex-direction: column;
104
- background: #fff;
105
-
106
- &__body {
107
- flex: 1;
108
- overflow-y: auto;
109
- padding: 0 16px 16px;
110
- }
111
- }
112
-
113
- .page-header {
114
- display: flex;
115
- align-items: center;
116
- padding: 10px 16px;
117
- flex-shrink: 0;
118
-
119
- .page-title {
120
- font-size: 16px;
121
- font-weight: 600;
122
- margin-right: 10px;
123
- }
124
-
125
- .page-tag {
126
- display: inline-block;
127
- padding: 1px 8px;
128
- font-size: 12px;
129
- border-radius: 4px;
130
- margin-right: 8px;
131
-
132
- &--change {
133
- background-color: var(--el-color-primary-light-9);
134
- color: var(--el-color-primary);
135
- border: 1px solid var(--el-color-primary-light-7);
136
- }
137
-
138
- &--status {
139
- background-color: var(--el-color-warning-light-9);
140
- color: var(--el-color-warning);
141
- border: 1px solid var(--el-color-warning-light-7);
142
- }
143
- }
144
- }
145
-
146
- .page-toolbar {
147
- padding: 0 16px 8px;
148
- flex-shrink: 0;
149
- }
150
- }
1
+ .change-history-page {
2
+ display: flex !important;
3
+ padding: 0 !important;
4
+ height: 100%;
5
+ overflow: hidden;
6
+
7
+ /* ─── 左侧:变更记录面板 ─── */
8
+ .history-panel {
9
+ width: 200px;
10
+ flex-shrink: 0;
11
+ border-right: 1px solid #e4e7ed;
12
+ display: flex;
13
+ flex-direction: column;
14
+ overflow: hidden;
15
+ background: #fff;
16
+
17
+ &__header {
18
+ padding: 12px 16px;
19
+ font-size: 14px;
20
+ font-weight: 600;
21
+ color: #303133;
22
+ border-bottom: 1px solid #e4e7ed;
23
+ flex-shrink: 0;
24
+ }
25
+
26
+ &__list {
27
+ flex: 1;
28
+ overflow-y: auto;
29
+ padding: 4px 0;
30
+ }
31
+ }
32
+
33
+ .history-card {
34
+ display: flex;
35
+ align-items: flex-start;
36
+ padding: 10px 16px;
37
+ cursor: pointer;
38
+ border-left: 3px solid transparent;
39
+ transition: background 0.15s;
40
+ gap: 8px;
41
+
42
+ &:hover {
43
+ background: #f5f7fa;
44
+ }
45
+
46
+ &.is-active {
47
+ background: #ecf5ff;
48
+ border-left-color: #409eff;
49
+ }
50
+
51
+ &__dot {
52
+ width: 8px;
53
+ height: 8px;
54
+ border-radius: 50%;
55
+ margin-top: 5px;
56
+ flex-shrink: 0;
57
+
58
+ &.is-add {
59
+ background: #409eff;
60
+ }
61
+ &.is-change {
62
+ background: #e6a23c;
63
+ }
64
+ }
65
+
66
+ &__content {
67
+ flex: 1;
68
+ min-width: 0;
69
+ }
70
+
71
+ &__type {
72
+ font-size: 13px;
73
+ font-weight: 500;
74
+ color: #303133;
75
+ line-height: 18px;
76
+ }
77
+
78
+ &__date {
79
+ font-size: 12px;
80
+ color: #909399;
81
+ line-height: 18px;
82
+ }
83
+
84
+ &__person {
85
+ font-size: 12px;
86
+ color: #606266;
87
+ line-height: 18px;
88
+ }
89
+ }
90
+
91
+ .history-empty {
92
+ padding: 32px 16px;
93
+ text-align: center;
94
+ color: #909399;
95
+ font-size: 13px;
96
+ }
97
+
98
+ /* ─── 右侧:变更详情面板 ─── */
99
+ .detail-panel {
100
+ flex: 1;
101
+ overflow: hidden;
102
+ display: flex;
103
+ flex-direction: column;
104
+ background: #fff;
105
+
106
+ &__body {
107
+ flex: 1;
108
+ overflow-y: auto;
109
+ padding: 0 16px 16px;
110
+ }
111
+ }
112
+
113
+ .page-header {
114
+ display: flex;
115
+ align-items: center;
116
+ padding: 10px 16px;
117
+ flex-shrink: 0;
118
+
119
+ .page-title {
120
+ font-size: 16px;
121
+ font-weight: 600;
122
+ margin-right: 10px;
123
+ }
124
+
125
+ .page-tag {
126
+ display: inline-block;
127
+ padding: 1px 8px;
128
+ font-size: 12px;
129
+ border-radius: 4px;
130
+ margin-right: 8px;
131
+
132
+ &--change {
133
+ background-color: var(--el-color-primary-light-9);
134
+ color: var(--el-color-primary);
135
+ border: 1px solid var(--el-color-primary-light-7);
136
+ }
137
+
138
+ &--status {
139
+ background-color: var(--el-color-warning-light-9);
140
+ color: var(--el-color-warning);
141
+ border: 1px solid var(--el-color-warning-light-7);
142
+ }
143
+ }
144
+ }
145
+
146
+ .page-toolbar {
147
+ padding: 0 16px 8px;
148
+ flex-shrink: 0;
149
+ }
150
+ }
@@ -1,79 +1,79 @@
1
- <template>
2
- <div class="app-container change-history-page">
3
- <!-- 左侧:变更历史记录面板 -->
4
- <div class="history-panel" v-loading="historyLoading">
5
- <div class="history-panel__header">变更记录</div>
6
- <div class="history-panel__list">
7
- <div
8
- v-for="item in historyList"
9
- :key="item.id"
10
- class="history-card"
11
- :class="{ 'is-active': item.id === selectedId }"
12
- @click="handleSelectHistory(item)"
13
- >
14
- <span
15
- class="history-card__dot"
16
- :class="item.changeType.includes('新增') ? 'is-add' : 'is-change'"
17
- ></span>
18
- <div class="history-card__content">
19
- <div class="history-card__type">{{ item.changeType }}</div>
20
- <div class="history-card__date">{{ item.changeTime }}</div>
21
- <div class="history-card__person">{{ item.changePerson }}</div>
22
- </div>
23
- </div>
24
- <div
25
- v-if="!historyList.length && !historyLoading"
26
- class="history-empty"
27
- >
28
- 暂无变更记录
29
- </div>
30
- </div>
31
- </div>
32
-
33
- <!-- 右侧:变更详情面板 -->
34
- <div class="detail-panel" v-loading="loading">
35
- <div class="page-header">
36
- <span class="page-title">客户变更详情</span>
37
- <span class="page-tag page-tag--change">变更</span>
38
- <span class="page-tag page-tag--status">未审核</span>
39
- </div>
40
- <div class="page-toolbar">
41
- <el-button @click="handleCancel">取消</el-button>
42
- </div>
43
- <div class="detail-panel__body">
44
- <c_customerTabs ref="tabsRef" mode="view" />
45
- </div>
46
- </div>
47
- </div>
48
- </template>
49
-
50
- <script setup lang="ts">
51
- import { useRoute } from "vue-router";
52
- import { useChangeHistory } from "./data";
53
- import c_customerTabs from "@/components/local/c_customerTabs/index.vue";
54
-
55
- const tabsRef = ref<InstanceType<typeof c_customerTabs>>();
56
- const route = useRoute();
57
-
58
- const {
59
- loading,
60
- historyLoading,
61
- historyList,
62
- selectedId,
63
- loadHistoryList,
64
- loadMockData,
65
- handleSelectHistory,
66
- handleCancel
67
- } = useChangeHistory(tabsRef);
68
-
69
- onMounted(() => {
70
- // TODO: 后端接口就绪后,启用真实接口:
71
- // const id = route.query.id as string;
72
- // if (id) { loadHistoryList(id); } else { loadMockData(); }
73
- loadMockData();
74
- });
75
- </script>
76
-
77
- <style scoped lang="scss">
78
- @import "./index.scss";
79
- </style>
1
+ <template>
2
+ <div class="app-container change-history-page">
3
+ <!-- 左侧:变更历史记录面板 -->
4
+ <div class="history-panel" v-loading="historyLoading">
5
+ <div class="history-panel__header">变更记录</div>
6
+ <div class="history-panel__list">
7
+ <div
8
+ v-for="item in historyList"
9
+ :key="item.id"
10
+ class="history-card"
11
+ :class="{ 'is-active': item.id === selectedId }"
12
+ @click="handleSelectHistory(item)"
13
+ >
14
+ <span
15
+ class="history-card__dot"
16
+ :class="item.changeType.includes('新增') ? 'is-add' : 'is-change'"
17
+ ></span>
18
+ <div class="history-card__content">
19
+ <div class="history-card__type">{{ item.changeType }}</div>
20
+ <div class="history-card__date">{{ item.changeTime }}</div>
21
+ <div class="history-card__person">{{ item.changePerson }}</div>
22
+ </div>
23
+ </div>
24
+ <div
25
+ v-if="!historyList.length && !historyLoading"
26
+ class="history-empty"
27
+ >
28
+ 暂无变更记录
29
+ </div>
30
+ </div>
31
+ </div>
32
+
33
+ <!-- 右侧:变更详情面板 -->
34
+ <div class="detail-panel" v-loading="loading">
35
+ <div class="page-header">
36
+ <span class="page-title">客户变更详情</span>
37
+ <span class="page-tag page-tag--change">变更</span>
38
+ <span class="page-tag page-tag--status">未审核</span>
39
+ </div>
40
+ <div class="page-toolbar">
41
+ <el-button @click="handleCancel">取消</el-button>
42
+ </div>
43
+ <div class="detail-panel__body">
44
+ <c_customerTabs ref="tabsRef" mode="view" />
45
+ </div>
46
+ </div>
47
+ </div>
48
+ </template>
49
+
50
+ <script setup lang="ts">
51
+ import { useRoute } from "vue-router";
52
+ import { useChangeHistory } from "./data";
53
+ import c_customerTabs from "@/components/local/c_customerTabs/index.vue";
54
+
55
+ const tabsRef = ref<InstanceType<typeof c_customerTabs>>();
56
+ const route = useRoute();
57
+
58
+ const {
59
+ loading,
60
+ historyLoading,
61
+ historyList,
62
+ selectedId,
63
+ loadHistoryList,
64
+ loadMockData,
65
+ handleSelectHistory,
66
+ handleCancel
67
+ } = useChangeHistory(tabsRef);
68
+
69
+ onMounted(() => {
70
+ // TODO: 后端接口就绪后,启用真实接口:
71
+ // const id = route.query.id as string;
72
+ // if (id) { loadHistoryList(id); } else { loadMockData(); }
73
+ loadMockData();
74
+ });
75
+ </script>
76
+
77
+ <style scoped lang="scss">
78
+ @import "./index.scss";
79
+ </style>