@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,41 +1,41 @@
1
- import {
2
- AbstractPageQueryHook,
3
- BaseQueryItemDesc,
4
- ActionButtonDesc,
5
- TableColumnDesc
6
- } from "@/types/page";
7
- import { RequestMethod } from "@jhlc/types/src/request-type";
8
-
9
- export function createPage(
10
- listApi: string,
11
- constQueryParam: Record<string, any>,
12
- queryItemsConfig: BaseQueryItemDesc<any>[],
13
- columns: TableColumnDesc<any>[],
14
- requestMethod: RequestMethod
15
- ) {
16
- let Page = new (class extends AbstractPageQueryHook {
17
- constructor() {
18
- super({
19
- requestMethod: requestMethod,
20
- url: {
21
- list: listApi
22
- },
23
- constQueryParam: () => constQueryParam
24
- });
25
- }
26
-
27
- queryDef(): BaseQueryItemDesc<any>[] {
28
- return queryItemsConfig;
29
- }
30
-
31
- toolbarDef(): ActionButtonDesc[] {
32
- return [];
33
- }
34
-
35
- columnsDef(): TableColumnDesc<any>[] {
36
- return [{ type: "index", label: "序号", width: 60 }, ...columns];
37
- }
38
- })();
39
-
40
- return Page.create() as any;
41
- }
1
+ import {
2
+ AbstractPageQueryHook,
3
+ BaseQueryItemDesc,
4
+ ActionButtonDesc,
5
+ TableColumnDesc
6
+ } from "@/types/page";
7
+ import { RequestMethod } from "@jhlc/types/src/request-type";
8
+
9
+ export function createPage(
10
+ listApi: string,
11
+ constQueryParam: Record<string, any>,
12
+ queryItemsConfig: BaseQueryItemDesc<any>[],
13
+ columns: TableColumnDesc<any>[],
14
+ requestMethod: RequestMethod
15
+ ) {
16
+ let Page = new (class extends AbstractPageQueryHook {
17
+ constructor() {
18
+ super({
19
+ requestMethod: requestMethod,
20
+ url: {
21
+ list: listApi
22
+ },
23
+ constQueryParam: () => constQueryParam
24
+ });
25
+ }
26
+
27
+ queryDef(): BaseQueryItemDesc<any>[] {
28
+ return queryItemsConfig;
29
+ }
30
+
31
+ toolbarDef(): ActionButtonDesc[] {
32
+ return [];
33
+ }
34
+
35
+ columnsDef(): TableColumnDesc<any>[] {
36
+ return [{ type: "index", label: "序号", width: 60 }, ...columns];
37
+ }
38
+ })();
39
+
40
+ return Page.create() as any;
41
+ }
@@ -1,136 +1,136 @@
1
- <template>
2
- <jh-dialog
3
- v-model="visible"
4
- :width="width"
5
- :title="title"
6
- :close-on-click-modal="false"
7
- :close-on-press-escape="false"
8
- >
9
- <BaseQuery
10
- :form="queryParam"
11
- :items="queryItems"
12
- :columns="queryColumns"
13
- :label-width="queryLabelWidth"
14
- @select="select"
15
- @reset="resetQuery"
16
- />
17
-
18
- <BaseTable
19
- ref="tableRef"
20
- :data="list"
21
- :columns="columns"
22
- showToolbar
23
- highlightCurrentRow
24
- currentRowSelectMethod="click"
25
- @row-dblclick="handleRowDblclick"
26
- />
27
-
28
- <jh-pagination
29
- v-show="page.total && page.total > 0"
30
- :total="page.total || 0"
31
- v-model:currentPage="page.current"
32
- v-model:pageSize="page.size"
33
- @current-change="select"
34
- @size-change="select"
35
- />
36
- <template #footer v-if="showFooterButtons">
37
- <div class="dialog-footer">
38
- <BaseToolbar :items="cancelConfirmButtons(close, confirm)" />
39
- </div>
40
- </template>
41
- </jh-dialog>
42
- </template>
43
-
44
- <script setup lang="ts">
45
- import { TableColumnDesc, BaseQueryItemDesc } from "@/types/page";
46
- import { cancelConfirmButtons } from "@jhlc/common-core/src/components/toolbar/toolbar-data";
47
- import { RequestMethod } from "@jhlc/types/src/request-type";
48
- import { createPage } from "./data";
49
-
50
- interface Props {
51
- width?: string;
52
- title?: string;
53
- queryColumns?: number;
54
- queryLabelWidth?: string;
55
- queryItems?: BaseQueryItemDesc[];
56
- tableColumns?: TableColumnDesc[];
57
- apiPath?: string;
58
- requestMethod?: RequestMethod;
59
- showFooterButtons?: boolean;
60
- }
61
-
62
- const props = withDefaults(defineProps<Props>(), {
63
- width: "1200px",
64
- title: "",
65
- queryColumns: 4,
66
- queryLabelWidth: "100px",
67
- queryItems: () => [],
68
- tableColumns: () => [],
69
- apiPath: "",
70
- requestMethod: RequestMethod.get,
71
- showFooterButtons: true
72
- });
73
-
74
- const emits = defineEmits(["ok"]);
75
-
76
- // 弹窗显示状态
77
- const visible = ref(false);
78
- // 固定的查询参数
79
- const constQueryParam = ref<Record<string, any>>({});
80
-
81
- const Page = createPage(
82
- props.apiPath,
83
- constQueryParam.value,
84
- props.queryItems,
85
- props.tableColumns,
86
- props.requestMethod
87
- );
88
-
89
- const {
90
- tableRef: tableRef,
91
- page: page,
92
- list: list,
93
- queryParam: queryParam,
94
- queryItems: queryItems,
95
- columns: columns,
96
- select: select,
97
- resetQuery: resetQuery
98
- } = Page;
99
-
100
- // 确定函数
101
- const confirm = () => {
102
- const selectedRows = tableRef.value?.getSelection();
103
- emits("ok", selectedRows);
104
- close();
105
- };
106
-
107
- // 双击行函数
108
- const handleRowDblclick = (row: any) => {
109
- if (!props.showFooterButtons) return;
110
- emits("ok", row);
111
- close();
112
- };
113
-
114
- // 打开弹窗
115
- const open = (params: Record<string, any>) => {
116
- if (params) {
117
- Object.assign(constQueryParam.value, params);
118
- }
119
- resetQuery();
120
- visible.value = true;
121
- };
122
-
123
- // 关闭弹窗
124
- const close = () => {
125
- visible.value = false;
126
- list.value = [];
127
- };
128
-
129
- // 暴露方法
130
- defineExpose({
131
- open,
132
- close
133
- });
134
- </script>
135
-
136
- <style scoped lang="scss" src="./index.scss"></style>
1
+ <template>
2
+ <jh-dialog
3
+ v-model="visible"
4
+ :width="width"
5
+ :title="title"
6
+ :close-on-click-modal="false"
7
+ :close-on-press-escape="false"
8
+ >
9
+ <BaseQuery
10
+ :form="queryParam"
11
+ :items="queryItems"
12
+ :columns="queryColumns"
13
+ :label-width="queryLabelWidth"
14
+ @select="select"
15
+ @reset="resetQuery"
16
+ />
17
+
18
+ <BaseTable
19
+ ref="tableRef"
20
+ :data="list"
21
+ :columns="columns"
22
+ showToolbar
23
+ highlightCurrentRow
24
+ currentRowSelectMethod="click"
25
+ @row-dblclick="handleRowDblclick"
26
+ />
27
+
28
+ <jh-pagination
29
+ v-show="page.total && page.total > 0"
30
+ :total="page.total || 0"
31
+ v-model:currentPage="page.current"
32
+ v-model:pageSize="page.size"
33
+ @current-change="select"
34
+ @size-change="select"
35
+ />
36
+ <template #footer v-if="showFooterButtons">
37
+ <div class="dialog-footer">
38
+ <BaseToolbar :items="cancelConfirmButtons(close, confirm)" />
39
+ </div>
40
+ </template>
41
+ </jh-dialog>
42
+ </template>
43
+
44
+ <script setup lang="ts">
45
+ import { TableColumnDesc, BaseQueryItemDesc } from "@/types/page";
46
+ import { cancelConfirmButtons } from "@jhlc/common-core/src/components/toolbar/toolbar-data";
47
+ import { RequestMethod } from "@jhlc/types/src/request-type";
48
+ import { createPage } from "./data";
49
+
50
+ interface Props {
51
+ width?: string;
52
+ title?: string;
53
+ queryColumns?: number;
54
+ queryLabelWidth?: string;
55
+ queryItems?: BaseQueryItemDesc[];
56
+ tableColumns?: TableColumnDesc[];
57
+ apiPath?: string;
58
+ requestMethod?: RequestMethod;
59
+ showFooterButtons?: boolean;
60
+ }
61
+
62
+ const props = withDefaults(defineProps<Props>(), {
63
+ width: "1200px",
64
+ title: "",
65
+ queryColumns: 4,
66
+ queryLabelWidth: "100px",
67
+ queryItems: () => [],
68
+ tableColumns: () => [],
69
+ apiPath: "",
70
+ requestMethod: RequestMethod.get,
71
+ showFooterButtons: true
72
+ });
73
+
74
+ const emits = defineEmits(["ok"]);
75
+
76
+ // 弹窗显示状态
77
+ const visible = ref(false);
78
+ // 固定的查询参数
79
+ const constQueryParam = ref<Record<string, any>>({});
80
+
81
+ const Page = createPage(
82
+ props.apiPath,
83
+ constQueryParam.value,
84
+ props.queryItems,
85
+ props.tableColumns,
86
+ props.requestMethod
87
+ );
88
+
89
+ const {
90
+ tableRef: tableRef,
91
+ page: page,
92
+ list: list,
93
+ queryParam: queryParam,
94
+ queryItems: queryItems,
95
+ columns: columns,
96
+ select: select,
97
+ resetQuery: resetQuery
98
+ } = Page;
99
+
100
+ // 确定函数
101
+ const confirm = () => {
102
+ const selectedRows = tableRef.value?.getSelection();
103
+ emits("ok", selectedRows);
104
+ close();
105
+ };
106
+
107
+ // 双击行函数
108
+ const handleRowDblclick = (row: any) => {
109
+ if (!props.showFooterButtons) return;
110
+ emits("ok", row);
111
+ close();
112
+ };
113
+
114
+ // 打开弹窗
115
+ const open = (params: Record<string, any>) => {
116
+ if (params) {
117
+ Object.assign(constQueryParam.value, params);
118
+ }
119
+ resetQuery();
120
+ visible.value = true;
121
+ };
122
+
123
+ // 关闭弹窗
124
+ const close = () => {
125
+ visible.value = false;
126
+ list.value = [];
127
+ };
128
+
129
+ // 暴露方法
130
+ defineExpose({
131
+ open,
132
+ close
133
+ });
134
+ </script>
135
+
136
+ <style scoped lang="scss" src="./index.scss"></style>
@@ -1,25 +1,25 @@
1
- .spliter-title {
2
- width: 100%;
3
- display: flex;
4
- align-items: center;
5
- background: white;
6
- padding: 8px 0;
7
-
8
- .title-bar {
9
- width: 4px;
10
- height: 20px;
11
- background: var(--el-color-primary);
12
- margin-right: 8px;
13
- flex-shrink: 0;
14
- }
15
-
16
- .title-text {
17
- line-height: 20px;
18
- flex-shrink: 0;
19
- margin-right: 8px;
20
- }
21
-
22
- .el-divider--horizontal {
23
- margin: 18px 0;
24
- }
25
- }
1
+ .spliter-title {
2
+ width: 100%;
3
+ display: flex;
4
+ align-items: center;
5
+ background: white;
6
+ padding: 8px 0;
7
+
8
+ .title-bar {
9
+ width: 4px;
10
+ height: 20px;
11
+ background: var(--el-color-primary);
12
+ margin-right: 8px;
13
+ flex-shrink: 0;
14
+ }
15
+
16
+ .title-text {
17
+ line-height: 20px;
18
+ flex-shrink: 0;
19
+ margin-right: 8px;
20
+ }
21
+
22
+ .el-divider--horizontal {
23
+ margin: 18px 0;
24
+ }
25
+ }
@@ -1,21 +1,21 @@
1
- <template>
2
- <div class="spliter-title">
3
- <div class="title-bar"></div>
4
- <span class="title-text">{{ title }}</span>
5
- <el-divider />
6
- </div>
7
- </template>
8
-
9
- <script setup lang="ts">
10
- interface Props {
11
- title: string;
12
- }
13
-
14
- withDefaults(defineProps<Props>(), {
15
- title: ""
16
- });
17
- </script>
18
-
19
- <style scoped lang="scss">
20
- @import "./index.scss";
21
- </style>
1
+ <template>
2
+ <div class="spliter-title">
3
+ <div class="title-bar"></div>
4
+ <span class="title-text">{{ title }}</span>
5
+ <el-divider />
6
+ </div>
7
+ </template>
8
+
9
+ <script setup lang="ts">
10
+ interface Props {
11
+ title: string;
12
+ }
13
+
14
+ withDefaults(defineProps<Props>(), {
15
+ title: ""
16
+ });
17
+ </script>
18
+
19
+ <style scoped lang="scss">
20
+ @import "./index.scss";
21
+ </style>