@agile-team/wl-skills-kit 2.11.1 → 2.11.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 (91) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +38 -21
  3. package/bin/wl-skills.js +27 -3
  4. package/files/.wl-skills/docs/jh-pagination.md +505 -505
  5. package/files/.wl-skills/docs/request.md +940 -940
  6. package/files/.wl-skills/docs/validate-exempt.md +113 -0
  7. package/files/.wl-skills/guides/architecture.md +1 -1
  8. package/files/.wl-skills/skills/_compat/headers/cursor-mdc.txt +1 -1
  9. package/files/.wl-skills/skills/_compat/headers/kiro.txt +1 -1
  10. package/files/.wl-skills/skills/_compat/headers/trae.txt +1 -1
  11. package/files/.wl-skills/skills/core/convention-audit/SKILL.md +3 -3
  12. package/files/.wl-skills/skills/core/spec-doc-parse/SKILL.md +332 -332
  13. package/files/.wl-skills/skills/core/spec-doc-parse/USAGE.md +97 -97
  14. package/files/.wl-skills/skills/sync/permission-sync/USAGE.md +107 -107
  15. package/files/.wl-skills/src/components/global/C_ParentView/index.vue +3 -3
  16. package/files/.wl-skills/src/components/global/C_RightToolbar/index.vue +157 -157
  17. package/files/.wl-skills/src/components/global/C_SvgIcon/index.vue +31 -31
  18. package/files/.wl-skills/src/components/global/C_SvgIcon/svgicon.js +10 -10
  19. package/files/.wl-skills/src/components/global/C_TagStatus/README.md +264 -264
  20. package/files/.wl-skills/src/components/global/C_TagStatus/config.ts +192 -192
  21. package/files/.wl-skills/src/components/global/C_TagStatus/index.vue +106 -106
  22. package/files/.wl-skills/src/components/global/C_TagStatus/types.ts +64 -64
  23. package/files/.wl-skills/src/components/global/C_Tree/README.md +153 -153
  24. package/files/.wl-skills/src/components/global/C_Tree/index.scss +42 -42
  25. package/files/.wl-skills/src/components/global/C_Tree/index.vue +78 -78
  26. package/files/.wl-skills/src/components/global/C_Tree/types.ts +59 -59
  27. package/files/.wl-skills/src/components/local/c_formModal/README.md +235 -235
  28. package/files/.wl-skills/src/components/local/c_formModal/data.ts +95 -95
  29. package/files/.wl-skills/src/components/local/c_formModal/index.scss +8 -8
  30. package/files/.wl-skills/src/components/local/c_formModal/index.vue +107 -107
  31. package/files/.wl-skills/src/components/local/c_formSections/data.ts +175 -175
  32. package/files/.wl-skills/src/components/local/c_formSections/index.scss +280 -280
  33. package/files/.wl-skills/src/components/local/c_formSections/index.vue +429 -429
  34. package/files/.wl-skills/src/components/local/c_listModal/data.ts +41 -41
  35. package/files/.wl-skills/src/components/local/c_listModal/index.vue +136 -136
  36. package/files/.wl-skills/src/components/local/c_spliterTitle/index.scss +25 -25
  37. package/files/.wl-skills/src/components/local/c_spliterTitle/index.vue +21 -21
  38. package/files/.wl-skills/src/components/remote/AGGrid/README.md +530 -530
  39. package/files/.wl-skills/src/components/remote/BaseForm/README.md +508 -508
  40. package/files/.wl-skills/src/components/remote/BaseQuery/README.md +865 -865
  41. package/files/.wl-skills/src/components/remote/BaseTable/README.md +941 -941
  42. package/files/.wl-skills/src/components/remote/BaseToolbar/README.md +496 -496
  43. package/files/.wl-skills/src/types/page.ts +24 -24
  44. package/files/.wl-skills/standards/04-coding-basics.md +39 -1
  45. package/files/.wl-skills/standards/09-typescript.md +26 -3
  46. package/files/.wl-skills/standards/12-base-table.md +56 -4
  47. package/files/.wl-skills/standards/13-platform-components.md +1 -0
  48. package/files/.wl-skills/standards/index.md +2 -2
  49. package/files/.wl-skills/templates/README.md +44 -44
  50. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add/api.md +54 -54
  51. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add/data.ts +346 -346
  52. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add/index.scss +1 -1
  53. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add/index.vue +28 -28
  54. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add-form/data.ts +115 -115
  55. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add-form/index.scss +44 -44
  56. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add-form/index.vue +43 -43
  57. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change/data.ts +338 -338
  58. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change/index.scss +1 -1
  59. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change/index.vue +28 -28
  60. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change-form/data.ts +115 -115
  61. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change-form/index.scss +44 -44
  62. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change-form/index.vue +43 -43
  63. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-archive/api.md +88 -88
  64. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-archive/data.ts +601 -601
  65. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-archive/index.scss +1 -1
  66. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-archive/index.vue +64 -64
  67. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-detail/api.md +67 -67
  68. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-detail/data.ts +286 -286
  69. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-detail/index.scss +139 -139
  70. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-detail/index.vue +318 -318
  71. package/files/.wl-skills/templates/produce/aiflow/mmwr-temp-customer-archive/api.md +98 -98
  72. package/files/.wl-skills/templates/produce/aiflow/mmwr-temp-customer-archive/data.ts +543 -543
  73. package/files/.wl-skills/templates/produce/aiflow/mmwr-temp-customer-archive/index.scss +1 -1
  74. package/files/.wl-skills/templates/produce/aiflow/mmwr-temp-customer-archive/index.vue +52 -52
  75. package/files/.wl-skills/templates/sale/demo/add-demo/data.ts +518 -518
  76. package/files/.wl-skills/templates/sale/demo/billet-flame-cut-plan/data.ts +524 -524
  77. package/files/.wl-skills/templates/sale/demo/billet-flame-cut-plan/index.scss +154 -154
  78. package/files/.wl-skills/templates/sale/demo/billet-flame-cut-plan/index.vue +117 -117
  79. package/files/.wl-skills/templates/sale/demo/domestic-trade-order/data.ts +308 -308
  80. package/files/.wl-skills/templates/sale/demo/domestic-trade-order/index.scss +99 -99
  81. package/files/.wl-skills/templates/sale/demo/domestic-trade-order/index.vue +77 -77
  82. package/files/.wl-skills/templates/sale/demo/heat-batch-return/data.ts +367 -367
  83. package/files/.wl-skills/templates/sale/demo/heat-batch-return/index.scss +100 -100
  84. package/files/.wl-skills/templates/sale/demo/heat-batch-return/index.vue +170 -170
  85. package/files/.wl-skills/templates/sale/demo/heat-batch-return/meltDialog.vue +320 -320
  86. package/files/.wl-skills/templates/sale/demo/metallurgical-spec/data.ts +824 -824
  87. package/lib/ast-rules.js +395 -12
  88. package/mcp/config.js +46 -46
  89. package/mcp/registry.js +6 -1
  90. package/mcp/tools/projectTools.js +9 -1
  91. package/package.json +2 -2
@@ -1,155 +1,155 @@
1
- .billet-flame-cut-plan {
2
- padding: 8px;
3
- background-color: #f5f5f5;
4
- box-sizing: border-box;
5
- display: flex;
6
- flex-direction: column;
7
- margin-bottom: 8px;
8
-
9
- .main-tabs {
10
- background: #fff;
11
- padding: 10px 10px;
12
- }
13
-
14
- .search-form {
15
- .search-row {
16
- margin-bottom: 8px;
17
-
18
- :deep(.el-col) {
19
- width: 20%;
20
- flex: unset;
21
- }
22
-
23
- &:last-child {
24
- margin-bottom: 0;
25
- }
26
-
27
- :deep(.el-form-item) {
28
- margin-bottom: 0;
29
- width: 100%;
30
-
31
- .el-form-item__content {
32
- flex: 1;
33
- margin-left: 0 !important;
34
- }
35
- }
36
- }
37
- }
38
-
39
- .el-divider--horizontal {
40
- margin: 16px 0;
41
- }
42
-
43
- .cut-info-divider {
44
- margin: 8px 0 16px 0 !important;
45
- }
46
- .action-buttons {
47
- display: flex;
48
- flex-wrap: wrap;
49
- gap: 8px;
50
-
51
- .el-button + .el-button {
52
- margin-left: 0;
53
- }
54
- }
55
-
56
- .el-button--small {
57
- font-size: 14px;
58
- }
59
-
60
- .page-container {
61
- margin-top: 16px;
62
- display: flex;
63
- justify-content: flex-end;
64
- }
65
-
66
- .table-section {
67
- margin-top: 16px;
68
- }
69
- }
70
-
71
- // 子标题线条样式调整
72
- :deep(.el-divider__text.is-left) {
73
- left: 0px;
74
- }
75
-
76
- :deep(.el-divider__text.is-left:after) {
77
- content: "";
78
- width: 4px;
79
- height: 16px;
80
- position: absolute;
81
- left: 6px;
82
- top: 4px;
83
- background-color: rgba(85.8, 119.1, 255, 1);
84
- }
85
-
86
- // 覆盖tabs的样式
87
- .main-tab {
88
- :deep(.el-tabs__header) {
89
- margin-bottom: 0;
90
- }
91
-
92
- :deep(.el-tabs__nav) {
93
- .el-tabs__active-bar {
94
- background-color: transparent;
95
- }
96
-
97
- .el-tabs__item {
98
- padding: 0 10px;
99
- color: #666;
100
- box-shadow: 0px -4px 5px 0px rgba(0, 0, 0, 0.05);
101
- border-top-left-radius: 4px;
102
- border-top-right-radius: 4px;
103
-
104
- &:last-child {
105
- padding-right: 10px;
106
- }
107
-
108
- &:nth-child(2) {
109
- padding-left: 10px;
110
- }
111
- }
112
-
113
- .is-active {
114
- background-color: #fff;
115
- color: #000;
116
- }
117
- }
118
- }
119
-
120
- // 主内容区域 - 左右布局
121
- .main-content {
122
- display: flex;
123
- gap: 16px;
124
- height: calc(100vh - 280px);
125
- align-items: flex-start; // 确保顶部对齐
126
-
127
- .left-panel,
128
- .right-panel {
129
- flex: 1;
130
- display: flex;
131
- flex-direction: column;
132
- min-width: 0; // 防止内容溢出
133
- }
134
-
135
- .left-panel {
136
- .pagination-wrapper {
137
- margin-top: 16px;
138
- display: flex;
139
- justify-content: flex-end;
140
- }
141
- }
142
-
143
- // 确保两个表格的divider和表头对齐
144
- :deep(.el-divider) {
145
- margin: 16px 0 !important;
146
- }
147
-
148
- :deep(.el-table) {
149
- flex: 1;
150
-
151
- .el-table__header-wrapper {
152
- background-color: #fafafa;
153
- }
154
- }
1
+ .billet-flame-cut-plan {
2
+ padding: 8px;
3
+ background-color: #f5f5f5;
4
+ box-sizing: border-box;
5
+ display: flex;
6
+ flex-direction: column;
7
+ margin-bottom: 8px;
8
+
9
+ .main-tabs {
10
+ background: #fff;
11
+ padding: 10px 10px;
12
+ }
13
+
14
+ .search-form {
15
+ .search-row {
16
+ margin-bottom: 8px;
17
+
18
+ :deep(.el-col) {
19
+ width: 20%;
20
+ flex: unset;
21
+ }
22
+
23
+ &:last-child {
24
+ margin-bottom: 0;
25
+ }
26
+
27
+ :deep(.el-form-item) {
28
+ margin-bottom: 0;
29
+ width: 100%;
30
+
31
+ .el-form-item__content {
32
+ flex: 1;
33
+ margin-left: 0 !important;
34
+ }
35
+ }
36
+ }
37
+ }
38
+
39
+ .el-divider--horizontal {
40
+ margin: 16px 0;
41
+ }
42
+
43
+ .cut-info-divider {
44
+ margin: 8px 0 16px 0 !important;
45
+ }
46
+ .action-buttons {
47
+ display: flex;
48
+ flex-wrap: wrap;
49
+ gap: 8px;
50
+
51
+ .el-button + .el-button {
52
+ margin-left: 0;
53
+ }
54
+ }
55
+
56
+ .el-button--small {
57
+ font-size: 14px;
58
+ }
59
+
60
+ .page-container {
61
+ margin-top: 16px;
62
+ display: flex;
63
+ justify-content: flex-end;
64
+ }
65
+
66
+ .table-section {
67
+ margin-top: 16px;
68
+ }
69
+ }
70
+
71
+ // 子标题线条样式调整
72
+ :deep(.el-divider__text.is-left) {
73
+ left: 0px;
74
+ }
75
+
76
+ :deep(.el-divider__text.is-left:after) {
77
+ content: "";
78
+ width: 4px;
79
+ height: 16px;
80
+ position: absolute;
81
+ left: 6px;
82
+ top: 4px;
83
+ background-color: rgba(85.8, 119.1, 255, 1);
84
+ }
85
+
86
+ // 覆盖tabs的样式
87
+ .main-tab {
88
+ :deep(.el-tabs__header) {
89
+ margin-bottom: 0;
90
+ }
91
+
92
+ :deep(.el-tabs__nav) {
93
+ .el-tabs__active-bar {
94
+ background-color: transparent;
95
+ }
96
+
97
+ .el-tabs__item {
98
+ padding: 0 10px;
99
+ color: #666;
100
+ box-shadow: 0px -4px 5px 0px rgba(0, 0, 0, 0.05);
101
+ border-top-left-radius: 4px;
102
+ border-top-right-radius: 4px;
103
+
104
+ &:last-child {
105
+ padding-right: 10px;
106
+ }
107
+
108
+ &:nth-child(2) {
109
+ padding-left: 10px;
110
+ }
111
+ }
112
+
113
+ .is-active {
114
+ background-color: #fff;
115
+ color: #000;
116
+ }
117
+ }
118
+ }
119
+
120
+ // 主内容区域 - 左右布局
121
+ .main-content {
122
+ display: flex;
123
+ gap: 16px;
124
+ height: calc(100vh - 280px);
125
+ align-items: flex-start; // 确保顶部对齐
126
+
127
+ .left-panel,
128
+ .right-panel {
129
+ flex: 1;
130
+ display: flex;
131
+ flex-direction: column;
132
+ min-width: 0; // 防止内容溢出
133
+ }
134
+
135
+ .left-panel {
136
+ .pagination-wrapper {
137
+ margin-top: 16px;
138
+ display: flex;
139
+ justify-content: flex-end;
140
+ }
141
+ }
142
+
143
+ // 确保两个表格的divider和表头对齐
144
+ :deep(.el-divider) {
145
+ margin: 16px 0 !important;
146
+ }
147
+
148
+ :deep(.el-table) {
149
+ flex: 1;
150
+
151
+ .el-table__header-wrapper {
152
+ background-color: #fafafa;
153
+ }
154
+ }
155
155
  }
@@ -1,117 +1,117 @@
1
- <!--
2
- * @Author: ChenYu ycyplus@gmail.com
3
- * @Date: 2025-06-13 18:38:58
4
- * @LastEditors: ChenYu ycyplus@gmail.com
5
- * @LastEditTime: 2026-01-04 00:29:09
6
- * @FilePath: \cx-ui-sale\src\views\sale\demo\billet-flame-cut-plan\index.vue
7
- * @Description: 钢坯火切计划 - 视图层
8
- * Copyright (c) 2025 by CHENY, All Rights Reserved 😎.
9
- -->
10
- <template>
11
- <div class="app-container app-page-container">
12
- <el-tabs v-model="activeTab" class="main-tab">
13
- <el-tab-pane label="火切计划" name="plan">
14
- <!-- 搜索栏 -->
15
- <BaseQuery
16
- :form="queryParam"
17
- :items="queryItems"
18
- :columns="5"
19
- @select="select"
20
- @reset="select"
21
- />
22
- <!-- 工具栏 -->
23
- <BaseToolbar :items="toolbars" />
24
- <!-- 主内容区域 - 左右布局 -->
25
- <div class="main-content">
26
- <!-- 左侧:计划信息 -->
27
- <div class="left-panel">
28
- <el-divider content-position="left">计划信息</el-divider>
29
- <BaseTable
30
- ref="tableRef"
31
- :data="list"
32
- :columns="columns"
33
- :render-type="renderType"
34
- :loading="loading"
35
- />
36
- <!-- 分页 -->
37
- <jh-pagination
38
- v-show="page.total > 0"
39
- :total="page.total"
40
- v-model:currentPage="page.current"
41
- v-model:pageSize="page.size"
42
- @current-change="select"
43
- @size-change="select"
44
- class="pagination-wrapper"
45
- />
46
- </div>
47
- <!-- 右侧:切割信息 -->
48
- <div class="right-panel">
49
- <el-divider content-position="left" class="cut-info-divider">切割信息</el-divider>
50
- <BaseTable
51
- :data="cutList"
52
- :columns="cutColumns"
53
- :render-type="renderType"
54
- :loading="loading"
55
- />
56
- </div>
57
- </div>
58
- </el-tab-pane>
59
- <el-tab-pane label="火切实绩" name="result">
60
- <!-- 预留火切实绩内容 -->
61
- </el-tab-pane>
62
- </el-tabs>
63
- </div>
64
- <!-- 表单弹窗 -->
65
- <c_formModal
66
- ref="modalRef"
67
- :form-items="modalConfig.formItems"
68
- :api="modalConfig.api"
69
- :width="modalConfig.width"
70
- :columns="modalConfig.columns"
71
- :label-width="modalConfig.labelWidth"
72
- :title-prefix="modalConfig.titlePrefix"
73
- @ok="select"
74
- />
75
- </template>
76
-
77
- <script setup lang="ts">
78
- import c_formModal from "@/components/local/c_formModal/index.vue";
79
- import { createPageHook, renderType } from "./data";
80
- import "./index.scss";
81
-
82
- // 弹窗引用
83
- const modalRef = ref();
84
-
85
- // 创建页面Hook实例
86
- const Page = createPageHook(modalRef);
87
-
88
- // 解构使用
89
- const {
90
- activeTab,
91
- queryParam,
92
- page,
93
- tableRef,
94
- list,
95
- cutList,
96
- loading,
97
- queryItems,
98
- toolbars,
99
- columns,
100
- cutColumns,
101
- modalConfig
102
- } = Page;
103
-
104
- // 查询数据
105
- const select = async () => {
106
- await Page.select();
107
- };
108
-
109
- // 初始化
110
- onMounted(() => {
111
- select();
112
- });
113
- </script>
114
-
115
- <style scoped lang="scss">
116
- @import "./index.scss";
117
- </style>
1
+ <!--
2
+ * @Author: ChenYu ycyplus@gmail.com
3
+ * @Date: 2025-06-13 18:38:58
4
+ * @LastEditors: ChenYu ycyplus@gmail.com
5
+ * @LastEditTime: 2026-01-04 00:29:09
6
+ * @FilePath: \cx-ui-sale\src\views\sale\demo\billet-flame-cut-plan\index.vue
7
+ * @Description: 钢坯火切计划 - 视图层
8
+ * Copyright (c) 2025 by CHENY, All Rights Reserved 😎.
9
+ -->
10
+ <template>
11
+ <div class="app-container app-page-container">
12
+ <el-tabs v-model="activeTab" class="main-tab">
13
+ <el-tab-pane label="火切计划" name="plan">
14
+ <!-- 搜索栏 -->
15
+ <BaseQuery
16
+ :form="queryParam"
17
+ :items="queryItems"
18
+ :columns="5"
19
+ @select="select"
20
+ @reset="select"
21
+ />
22
+ <!-- 工具栏 -->
23
+ <BaseToolbar :items="toolbars" />
24
+ <!-- 主内容区域 - 左右布局 -->
25
+ <div class="main-content">
26
+ <!-- 左侧:计划信息 -->
27
+ <div class="left-panel">
28
+ <el-divider content-position="left">计划信息</el-divider>
29
+ <BaseTable
30
+ ref="tableRef"
31
+ :data="list"
32
+ :columns="columns"
33
+ :render-type="renderType"
34
+ :loading="loading"
35
+ />
36
+ <!-- 分页 -->
37
+ <jh-pagination
38
+ v-show="page.total > 0"
39
+ :total="page.total"
40
+ v-model:currentPage="page.current"
41
+ v-model:pageSize="page.size"
42
+ @current-change="select"
43
+ @size-change="select"
44
+ class="pagination-wrapper"
45
+ />
46
+ </div>
47
+ <!-- 右侧:切割信息 -->
48
+ <div class="right-panel">
49
+ <el-divider content-position="left" class="cut-info-divider">切割信息</el-divider>
50
+ <BaseTable
51
+ :data="cutList"
52
+ :columns="cutColumns"
53
+ :render-type="renderType"
54
+ :loading="loading"
55
+ />
56
+ </div>
57
+ </div>
58
+ </el-tab-pane>
59
+ <el-tab-pane label="火切实绩" name="result">
60
+ <!-- 预留火切实绩内容 -->
61
+ </el-tab-pane>
62
+ </el-tabs>
63
+ </div>
64
+ <!-- 表单弹窗 -->
65
+ <c_formModal
66
+ ref="modalRef"
67
+ :form-items="modalConfig.formItems"
68
+ :api="modalConfig.api"
69
+ :width="modalConfig.width"
70
+ :columns="modalConfig.columns"
71
+ :label-width="modalConfig.labelWidth"
72
+ :title-prefix="modalConfig.titlePrefix"
73
+ @ok="select"
74
+ />
75
+ </template>
76
+
77
+ <script setup lang="ts">
78
+ import c_formModal from "@/components/local/c_formModal/index.vue";
79
+ import { createPageHook, renderType } from "./data";
80
+ import "./index.scss";
81
+
82
+ // 弹窗引用
83
+ const modalRef = ref();
84
+
85
+ // 创建页面Hook实例
86
+ const Page = createPageHook(modalRef);
87
+
88
+ // 解构使用
89
+ const {
90
+ activeTab,
91
+ queryParam,
92
+ page,
93
+ tableRef,
94
+ list,
95
+ cutList,
96
+ loading,
97
+ queryItems,
98
+ toolbars,
99
+ columns,
100
+ cutColumns,
101
+ modalConfig
102
+ } = Page;
103
+
104
+ // 查询数据
105
+ const select = async () => {
106
+ await Page.select();
107
+ };
108
+
109
+ // 初始化
110
+ onMounted(() => {
111
+ select();
112
+ });
113
+ </script>
114
+
115
+ <style scoped lang="scss">
116
+ @import "./index.scss";
117
+ </style>