@ajaxjs/ui 1.2.2 → 1.2.4

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 (156) hide show
  1. package/README.md +8 -11
  2. package/dist/api-helper/common/arg.vue +46 -0
  3. package/dist/api-helper/common/http-method.vue +53 -0
  4. package/dist/api-helper/common/input-table.vue +128 -0
  5. package/dist/api-helper/document/document-render.d.ts +10 -0
  6. package/dist/api-helper/document/document-render.js +38 -0
  7. package/dist/api-helper/document/document-render.js.map +1 -0
  8. package/dist/api-helper/document/document-render.ts +35 -0
  9. package/dist/api-helper/document/document-render.vue +155 -0
  10. package/dist/api-helper/document/document.d.ts +31 -0
  11. package/dist/api-helper/document/document.js +55 -0
  12. package/dist/api-helper/document/document.js.map +1 -0
  13. package/dist/api-helper/document/document.ts +55 -0
  14. package/dist/api-helper/document/document.vue +78 -0
  15. package/dist/api-helper/document/perview.vue +0 -0
  16. package/dist/api-helper/index.js +142 -0
  17. package/dist/api-helper/index.vue +108 -0
  18. package/dist/api-helper/request-body.vue +66 -0
  19. package/dist/api-helper/table.d.ts +7 -0
  20. package/dist/api-helper/table.js +13 -0
  21. package/dist/api-helper/table.js.map +1 -0
  22. package/dist/api-helper/table.ts +10 -0
  23. package/dist/api-helper/table.vue +103 -0
  24. package/dist/api-helper/xhr.js +100 -0
  25. package/dist/api-helper2/api-helper.d.ts +194 -0
  26. package/dist/api-helper2/api-helper.vue +144 -0
  27. package/dist/api-helper2/bookmark.vue +168 -0
  28. package/dist/api-helper2/common/arg.vue +46 -0
  29. package/dist/api-helper2/common/http-method.vue +53 -0
  30. package/dist/api-helper2/document/document-render.vue +189 -0
  31. package/dist/api-helper2/document/document.vue +130 -0
  32. package/dist/api-helper2/document/perview.vue +0 -0
  33. package/dist/api-helper2/env.vue +140 -0
  34. package/dist/api-helper2/history.vue +116 -0
  35. package/dist/api-helper2/main.vue +70 -0
  36. package/dist/api-helper2/request-body.vue +68 -0
  37. package/dist/api-helper2/table.vue +116 -0
  38. package/dist/api-selector/api-list-dataservice.d.ts +18 -0
  39. package/dist/api-selector/api-list-dataservice.js +209 -0
  40. package/dist/api-selector/api-list-dataservice.js.map +1 -0
  41. package/dist/api-selector/api-list-dataservice.ts +232 -0
  42. package/dist/api-selector/api-list-swagger.d.ts +28 -0
  43. package/dist/api-selector/api-list-swagger.js +179 -0
  44. package/dist/api-selector/api-list-swagger.js.map +1 -0
  45. package/dist/api-selector/api-list-swagger.ts +206 -0
  46. package/dist/api-selector/api-list.d.ts +80 -0
  47. package/dist/api-selector/api-list.js +129 -0
  48. package/dist/api-selector/api-list.js.map +1 -0
  49. package/dist/api-selector/api-list.ts +135 -0
  50. package/dist/api-selector/index.vue +125 -0
  51. package/dist/api-selector/test-dataservice.d.ts +23 -0
  52. package/dist/api-selector/test-dataservice.js +74 -0
  53. package/dist/api-selector/test-dataservice.js.map +1 -0
  54. package/dist/api-selector/test-swagger.d.ts +901 -0
  55. package/dist/api-selector/test-swagger.js +656 -0
  56. package/dist/api-selector/test-swagger.js.map +1 -0
  57. package/dist/data-source/data-source.css +44 -0
  58. package/dist/data-source/data-source.d.ts +14 -0
  59. package/dist/data-source/data-source.html +59 -0
  60. package/dist/data-source/data-source.js +97 -0
  61. package/dist/data-source/data-source.js.map +1 -0
  62. package/dist/data-source/data-source.less +46 -0
  63. package/dist/data-source/data-source.ts +95 -0
  64. package/dist/data-source/data-source.vue +59 -0
  65. package/dist/iView-ext/fast-iview-table/fast-iview-table.d.ts +37 -0
  66. package/dist/iView-ext/fast-iview-table/fast-iview-table.js +72 -0
  67. package/dist/iView-ext/fast-iview-table/fast-iview-table.js.map +1 -0
  68. package/dist/iView-ext/fast-iview-table/fast-iview-table.ts +75 -0
  69. package/dist/iView-ext/fast-iview-table/fast-iview-table.vue +52 -0
  70. package/dist/iView-ext/fast-iview-table/list.d.ts +44 -0
  71. package/dist/iView-ext/fast-iview-table/list.js +97 -0
  72. package/dist/iView-ext/fast-iview-table/list.js.map +1 -0
  73. package/dist/iView-ext/fast-iview-table/list.ts +109 -0
  74. package/dist/iView-ext/tips.vue +14 -0
  75. package/dist/index.d.ts +33 -31
  76. package/dist/index.js +8 -60
  77. package/dist/index.js.map +1 -1
  78. package/dist/index.ts +15 -0
  79. package/dist/libs/api-helper.d.ts +194 -0
  80. package/dist/libs/api-list.d.ts +15 -0
  81. package/dist/libs/common.d.ts +201 -0
  82. package/dist/libs/entity.d.ts +26 -0
  83. package/dist/libs/entity.js +1 -0
  84. package/dist/libs/entity.js.map +1 -0
  85. package/dist/libs/entity.ts +31 -0
  86. package/dist/libs/iview-widgets.d.ts +59 -0
  87. package/dist/libs/iview-widgets.js +2 -0
  88. package/dist/libs/iview-widgets.js.map +1 -0
  89. package/dist/libs/iview-widgets.ts +73 -0
  90. package/dist/main.d.ts +1 -1
  91. package/dist/main.js +16 -8
  92. package/dist/main.js.map +1 -1
  93. package/dist/main.ts +22 -0
  94. package/dist/table-selector/table-selector.htm +28 -0
  95. package/dist/table-selector/table-selector.js +149 -0
  96. package/package.json +16 -17
  97. package/dist/router/index.d.ts +0 -3
  98. package/dist/router/index.js +0 -44
  99. package/dist/router/index.js.map +0 -1
  100. package/dist/util/cookies.d.ts +0 -18
  101. package/dist/util/cookies.js +0 -46
  102. package/dist/util/cookies.js.map +0 -1
  103. package/dist/util/dom.d.ts +0 -17
  104. package/dist/util/dom.js +0 -44
  105. package/dist/util/dom.js.map +0 -1
  106. package/dist/util/utils.d.ts +0 -51
  107. package/dist/util/utils.js +0 -174
  108. package/dist/util/utils.js.map +0 -1
  109. package/dist/util/xhr-config.d.ts +0 -22
  110. package/dist/util/xhr-config.js +0 -3
  111. package/dist/util/xhr-config.js.map +0 -1
  112. package/dist/util/xhr.d.ts +0 -71
  113. package/dist/util/xhr.js +0 -262
  114. package/dist/util/xhr.js.map +0 -1
  115. package/dist/widget/AccordionMenu.vue +0 -140
  116. package/dist/widget/AdjustFontSize.vue +0 -65
  117. package/dist/widget/Article.vue +0 -59
  118. package/dist/widget/EmptyContent.d.ts +0 -5
  119. package/dist/widget/EmptyContent.js +0 -7
  120. package/dist/widget/EmptyContent.js.map +0 -1
  121. package/dist/widget/Expander.vue +0 -65
  122. package/dist/widget/FileUploader/FileUploader.d.ts +0 -70
  123. package/dist/widget/FileUploader/FileUploader.js +0 -139
  124. package/dist/widget/FileUploader/FileUploader.js.map +0 -1
  125. package/dist/widget/FileUploader/FileUploader.less +0 -68
  126. package/dist/widget/FileUploader/FileUploader.ts +0 -156
  127. package/dist/widget/FileUploader/FileUploader.vue +0 -43
  128. package/dist/widget/HtmlEditor/HtmlEditor.d.ts +0 -70
  129. package/dist/widget/HtmlEditor/HtmlEditor.js +0 -287
  130. package/dist/widget/HtmlEditor/HtmlEditor.js.map +0 -1
  131. package/dist/widget/HtmlEditor/HtmlEditor.less +0 -345
  132. package/dist/widget/HtmlEditor/HtmlEditor.ts +0 -339
  133. package/dist/widget/HtmlEditor/HtmlEditor.vue +0 -70
  134. package/dist/widget/HtmlEditor/html-editor-HtmlSanitizer.js +0 -103
  135. package/dist/widget/ImageEnlarger.vue +0 -105
  136. package/dist/widget/OpacityBanner.vue +0 -125
  137. package/dist/widget/ProcessLine.vue +0 -133
  138. package/dist/widget/Resize.d.ts +0 -51
  139. package/dist/widget/Resize.js +0 -133
  140. package/dist/widget/Resize.js.map +0 -1
  141. package/dist/widget/Resize.ts +0 -152
  142. package/dist/widget/Resize.vue +0 -104
  143. package/dist/widget/TreeSelector.vue +0 -4
  144. package/dist/widget/calendar/BetweenDate.vue +0 -63
  145. package/dist/widget/calendar/Calendar.d.ts +0 -55
  146. package/dist/widget/calendar/Calendar.js +0 -145
  147. package/dist/widget/calendar/Calendar.js.map +0 -1
  148. package/dist/widget/calendar/Calendar.less +0 -210
  149. package/dist/widget/calendar/Calendar.ts +0 -167
  150. package/dist/widget/calendar/Calendar.vue +0 -52
  151. package/dist/widget/calendar/CalendarInput.vue +0 -71
  152. package/dist/widget/form/validator.d.ts +0 -70
  153. package/dist/widget/form/validator.js +0 -220
  154. package/dist/widget/form/validator.js.map +0 -1
  155. package/dist/widget/form/validator.ts +0 -289
  156. package/dist/widget/play-ground/sku.vue +0 -93
@@ -0,0 +1,28 @@
1
+ declare const _default: {
2
+ data(): {};
3
+ methods: {
4
+ getSwaggerData(): void;
5
+ renderSwaggerNode(dir: string, method: string, isAddTypeNode?: boolean): {};
6
+ /**
7
+ * 点击加载接口详情
8
+ *
9
+ * @param data
10
+ */
11
+ appendApiDetail(data: any): void;
12
+ /**
13
+ * 获取实体字段
14
+ *
15
+ * @param item
16
+ * @returns
17
+ */
18
+ getFields(item: any): any | null;
19
+ treeSwaggerHandler(nodeArr: any, node: any): void;
20
+ /**
21
+ * 在过滤器中选择结果
22
+ *
23
+ * @param value
24
+ */
25
+ filterHandler(value: string): void;
26
+ };
27
+ };
28
+ export default _default;
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const test_swagger_1 = __importDefault(require("./test-swagger"));
7
+ exports.default = {
8
+ data() {
9
+ return {
10
+ SwaggerTreeData: [],
11
+ SwaggerFilter: {
12
+ keyword: "", data: []
13
+ },
14
+ SwaggerTreeRootNode: null
15
+ };
16
+ },
17
+ methods: {
18
+ getSwaggerData() {
19
+ let tagMap = {};
20
+ for (let path in test_swagger_1.default.paths) {
21
+ let _path = test_swagger_1.default.paths[path];
22
+ for (let method in _path) {
23
+ let tag = _path[method].tags[0];
24
+ // console.log('http method::', method)
25
+ // console.log('tag::', tag);
26
+ if (!tagMap[tag])
27
+ tagMap[tag] = [];
28
+ tagMap[tag].push({ method, path });
29
+ }
30
+ }
31
+ let i = 0;
32
+ // 转换为符合 tree 的数据格式
33
+ for (let tag in tagMap) {
34
+ let children = [];
35
+ let arr = tagMap[tag];
36
+ arr.forEach(({ method, path }) => children.push(this.renderSwaggerNode(path, method.toUpperCase())));
37
+ this.SwaggerTreeData.push({
38
+ title: tag,
39
+ expand: ((i++) === 0),
40
+ children: children
41
+ });
42
+ }
43
+ },
44
+ renderSwaggerNode(dir, method, isAddTypeNode) {
45
+ this.SwaggerFilter.data.push(method + " " + dir); // 加入搜索
46
+ return {
47
+ title: dir,
48
+ render: (h, { root, node, data }) => {
49
+ this.$set(data, 'method', method);
50
+ if (!this.SwaggerTreeRootNode)
51
+ this.SwaggerTreeRootNode = root;
52
+ let nodeCfg = {
53
+ on: { click: () => this.appendApiDetail(data) } // 点击加载接口详情
54
+ };
55
+ if (isAddTypeNode) // 右键点击事件
56
+ nodeCfg.on['contextmenu'] = (e) => {
57
+ e.preventDefault();
58
+ this.contextSelectdNode.root = root;
59
+ this.contextSelectdNode.node = node;
60
+ // this.contextSelectdNode.data = data;
61
+ this.$refs.contentFileMenu.$refs.reference = e.target;
62
+ this.$refs.contentFileMenu.currentVisible = !this.$refs.contentFileMenu.currentVisible;
63
+ };
64
+ let arr = [
65
+ h('span', Object.assign({ class: 'http-method ' + method.toLowerCase() }, nodeCfg), method),
66
+ h('span', nodeCfg, data.title)
67
+ ];
68
+ if (isAddTypeNode)
69
+ arr.unshift(h('span', { class: 'api-type swagger' }, 'S')); // 头部加入
70
+ return arr;
71
+ }
72
+ };
73
+ },
74
+ /**
75
+ * 点击加载接口详情
76
+ *
77
+ * @param data
78
+ */
79
+ appendApiDetail(data) {
80
+ if (!data.isLoaded) {
81
+ console.log(test_swagger_1.default.paths[data.title][data.method.toLowerCase()]);
82
+ let meta = test_swagger_1.default.paths[data.title][data.method.toLowerCase()];
83
+ // 请求参数
84
+ let paramsChildren = [];
85
+ let params = meta.parameters;
86
+ params.forEach((item) => {
87
+ if (!item.type && item.schema && item.schema.$ref) {
88
+ let fields = this.getFields(item);
89
+ for (let field in fields) {
90
+ let type = fields[field].type;
91
+ let desc = fields[field].description;
92
+ paramsChildren.push({
93
+ title: `${field}: ${type || field} ${desc ? ',说明:' + desc : ''}`, disableCheckbox: true,
94
+ });
95
+ }
96
+ }
97
+ else {
98
+ let desc = item.description;
99
+ paramsChildren.push({
100
+ title: `${item.name}: ${item.type},必填:${item.required ? '是' : '否'} ${desc ? ',说明:' + desc : ''}`, disableCheckbox: true,
101
+ });
102
+ }
103
+ });
104
+ // 响应结果
105
+ let respChildren = [];
106
+ let resp = meta.responses['200'];
107
+ if (resp && resp.schema && resp.schema.$ref) {
108
+ // debugger
109
+ let fields = this.getFields(resp);
110
+ for (let field in fields) {
111
+ let type = fields[field].type;
112
+ let desc = fields[field].description;
113
+ respChildren.push({
114
+ title: `${field}: ${type || field} ${desc ? ',说明:' + desc : ''}`, disableCheckbox: true,
115
+ });
116
+ }
117
+ }
118
+ // 整理为树节点
119
+ const children = data.children || [];
120
+ children.push({
121
+ title: '请求参数',
122
+ disableCheckbox: true,
123
+ expand: true,
124
+ children: paramsChildren.length ? paramsChildren : [{ title: '无', disableCheckbox: true }]
125
+ }, {
126
+ title: '响应结果',
127
+ disableCheckbox: true,
128
+ expand: true,
129
+ children: respChildren
130
+ });
131
+ this.$set(data, 'children', children);
132
+ this.$set(data, 'expand', true);
133
+ this.$set(data, 'isLoaded', true);
134
+ }
135
+ },
136
+ /**
137
+ * 获取实体字段
138
+ *
139
+ * @param item
140
+ * @returns
141
+ */
142
+ getFields(item) {
143
+ let arr = item.schema.$ref.split('/');
144
+ let schema = arr.pop();
145
+ let _schema = test_swagger_1.default.definitions[schema];
146
+ if (_schema)
147
+ return _schema.properties;
148
+ else
149
+ console.warn('找不到元数据 ' + schema);
150
+ return null;
151
+ },
152
+ treeSwaggerHandler(nodeArr, node) {
153
+ // console.log(arguments)
154
+ },
155
+ /**
156
+ * 在过滤器中选择结果
157
+ *
158
+ * @param value
159
+ */
160
+ filterHandler(value) {
161
+ let arr = value.split(' ');
162
+ let method = arr[0], url = arr[1];
163
+ let target = this.SwaggerTreeRootNode.find((el) => el.node.method == method && el.node.title == url);
164
+ if (!target)
165
+ console.log('找不到目标节点', method, url);
166
+ else {
167
+ console.log(target);
168
+ target.checked = true;
169
+ target.expand = true;
170
+ target.node.checked = true;
171
+ target.node.expand = true;
172
+ // this.$set( target.node, 'expand', true);
173
+ this.$set(target, 'checked', true);
174
+ this.$set(target.node, 'checked', true);
175
+ }
176
+ }
177
+ }
178
+ };
179
+ //# sourceMappingURL=api-list-swagger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-list-swagger.js","sourceRoot":"","sources":["../../src/api-selector/api-list-swagger.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,206 @@
1
+ import testData from './test-swagger';
2
+
3
+ export default {
4
+ data(): {} {
5
+ return {
6
+ SwaggerTreeData: [],
7
+ SwaggerFilter: {
8
+ keyword: "", data: []
9
+ },
10
+ SwaggerTreeRootNode: null
11
+ };
12
+ },
13
+ methods: {
14
+ getSwaggerData(): void {
15
+ let tagMap = {};
16
+
17
+ for (let path in testData.paths) {
18
+ let _path: any = testData.paths[path];
19
+
20
+ for (let method in _path) {
21
+ let tag: string = _path[method].tags[0];
22
+ // console.log('http method::', method)
23
+ // console.log('tag::', tag);
24
+
25
+ if (!tagMap[tag])
26
+ tagMap[tag] = [];
27
+
28
+ tagMap[tag].push({ method, path });
29
+ }
30
+ }
31
+
32
+ let i: number = 0;
33
+
34
+ // 转换为符合 tree 的数据格式
35
+ for (let tag in tagMap) {
36
+ let children: any[] = [];
37
+ let arr: any[] = tagMap[tag];
38
+
39
+ arr.forEach(({ method, path }) => children.push(this.renderSwaggerNode(path, method.toUpperCase())));
40
+ this.SwaggerTreeData.push({
41
+ title: tag,
42
+ expand: ((i++) === 0),
43
+ children: children
44
+ });
45
+ }
46
+ },
47
+ renderSwaggerNode(dir: string, method: string, isAddTypeNode?: boolean): {} {
48
+ this.SwaggerFilter.data.push(method + " " + dir); // 加入搜索
49
+
50
+ return {
51
+ title: dir,
52
+ render: (h: Function, { root, node, data }) => {
53
+ this.$set(data, 'method', method);
54
+
55
+ if (!this.SwaggerTreeRootNode)
56
+ this.SwaggerTreeRootNode = root;
57
+
58
+ let nodeCfg = { // 节点事件的配置
59
+ on: { click: () => this.appendApiDetail(data) }// 点击加载接口详情
60
+ };
61
+
62
+ if (isAddTypeNode)// 右键点击事件
63
+ nodeCfg.on['contextmenu'] = (e: Event) => {
64
+ e.preventDefault();
65
+ this.contextSelectdNode.root = root;
66
+ this.contextSelectdNode.node = node;
67
+
68
+ // this.contextSelectdNode.data = data;
69
+ this.$refs.contentFileMenu.$refs.reference = e.target;
70
+ this.$refs.contentFileMenu.currentVisible = !this.$refs.contentFileMenu.currentVisible;
71
+ };
72
+
73
+ let arr: any[] = [
74
+ h('span', Object.assign({ class: 'http-method ' + method.toLowerCase() }, nodeCfg), method),
75
+ h('span', nodeCfg, data.title)
76
+ ];
77
+
78
+ if (isAddTypeNode)
79
+ arr.unshift(h('span', { class: 'api-type swagger' }, 'S')); // 头部加入
80
+
81
+ return arr;
82
+ }
83
+ }
84
+ },
85
+
86
+ /**
87
+ * 点击加载接口详情
88
+ *
89
+ * @param data
90
+ */
91
+ appendApiDetail(data: any): void {
92
+ if (!data.isLoaded) {
93
+ console.log(testData.paths[data.title][data.method.toLowerCase()]);
94
+ let meta: any = testData.paths[data.title][data.method.toLowerCase()];
95
+
96
+ // 请求参数
97
+ let paramsChildren: any[] = [];
98
+ let params: any[] = meta.parameters;
99
+
100
+ params.forEach((item: any) => {
101
+ if (!item.type && item.schema && item.schema.$ref) {
102
+ let fields = this.getFields(item);
103
+
104
+ for (let field in fields) {
105
+ let type: string = fields[field].type;
106
+ let desc: string = fields[field].description;
107
+
108
+ paramsChildren.push({
109
+ title: `${field}: ${type || field} ${desc ? ',说明:' + desc : ''}`, disableCheckbox: true,
110
+ });
111
+ }
112
+ } else {
113
+ let desc: string = item.description;
114
+ paramsChildren.push({
115
+ title: `${item.name}: ${item.type},必填:${item.required ? '是' : '否'} ${desc ? ',说明:' + desc : ''}`, disableCheckbox: true,
116
+ });
117
+ }
118
+ });
119
+
120
+ // 响应结果
121
+ let respChildren: any[] = [];
122
+ let resp = meta.responses['200'];
123
+
124
+ if (resp && resp.schema && resp.schema.$ref) {
125
+ // debugger
126
+ let fields = this.getFields(resp);
127
+
128
+ for (let field in fields) {
129
+ let type: string = fields[field].type;
130
+ let desc: string = fields[field].description;
131
+
132
+ respChildren.push({
133
+ title: `${field}: ${type || field} ${desc ? ',说明:' + desc : ''}`, disableCheckbox: true,
134
+ });
135
+ }
136
+ }
137
+
138
+ // 整理为树节点
139
+ const children = data.children || [];
140
+
141
+ children.push({
142
+ title: '请求参数',
143
+ disableCheckbox: true,
144
+ expand: true,
145
+ children: paramsChildren.length ? paramsChildren : [{ title: '无', disableCheckbox: true }]
146
+ }, {
147
+ title: '响应结果',
148
+ disableCheckbox: true,
149
+ expand: true,
150
+ children: respChildren
151
+ });
152
+
153
+ this.$set(data, 'children', children);
154
+ this.$set(data, 'expand', true);
155
+ this.$set(data, 'isLoaded', true);
156
+ }
157
+ },
158
+
159
+ /**
160
+ * 获取实体字段
161
+ *
162
+ * @param item
163
+ * @returns
164
+ */
165
+ getFields(item: any): any | null {
166
+ let arr: string[] = item.schema.$ref.split('/');
167
+ let schema: string = arr.pop();
168
+ let _schema = testData.definitions[schema];
169
+
170
+ if (_schema)
171
+ return _schema.properties;
172
+ else console.warn('找不到元数据 ' + schema);
173
+
174
+ return null;
175
+ },
176
+
177
+ treeSwaggerHandler(nodeArr, node): void {
178
+ // console.log(arguments)
179
+ },
180
+
181
+ /**
182
+ * 在过滤器中选择结果
183
+ *
184
+ * @param value
185
+ */
186
+ filterHandler(value: string): void {
187
+ let arr: string[] = value.split(' ');
188
+ let method: string = arr[0], url: string = arr[1];
189
+ let target = this.SwaggerTreeRootNode.find((el: any) => el.node.method == method && el.node.title == url);
190
+
191
+ if (!target)
192
+ console.log('找不到目标节点', method, url);
193
+ else {
194
+ console.log(target)
195
+ target.checked = true;
196
+ target.expand = true;
197
+ target.node.checked = true;
198
+ target.node.expand = true;
199
+ // this.$set( target.node, 'expand', true);
200
+ this.$set(target, 'checked', true);
201
+ this.$set(target.node, 'checked', true);
202
+ }
203
+ }
204
+
205
+ }
206
+ };
@@ -0,0 +1,80 @@
1
+ declare const _default: {
2
+ props: {
3
+ apiRoot: {
4
+ type: StringConstructor;
5
+ required: boolean;
6
+ };
7
+ };
8
+ mixins: ({
9
+ data(): {};
10
+ methods: {
11
+ getDataService(): void;
12
+ loadTablesCfg(item: any, callback: Function): void; /**
13
+ * 测试 API
14
+ */
15
+ renderDataServiceNode(dir: string, method: string, cfg: any, isAddTypeNode?: boolean): {};
16
+ appendDataServiceDetail(data: any): void;
17
+ };
18
+ } | {
19
+ data(): {};
20
+ methods: {
21
+ getSwaggerData(): void;
22
+ renderSwaggerNode(dir: string, method: string, isAddTypeNode?: boolean): {};
23
+ appendApiDetail(data: any): void;
24
+ getFields(item: any): any;
25
+ treeSwaggerHandler(nodeArr: any, node: any): void;
26
+ filterHandler(value: string): void;
27
+ };
28
+ })[];
29
+ data(): {
30
+ API: string;
31
+ showSelector: boolean;
32
+ selectedTab: string;
33
+ treeAllApi: any[];
34
+ selectedApi: {
35
+ DataService: {};
36
+ Swagger: {};
37
+ };
38
+ contextSelectdNode: {
39
+ root: {};
40
+ node: {};
41
+ data: {};
42
+ };
43
+ };
44
+ mounted(): void;
45
+ methods: {
46
+ /**
47
+ * 自动填充的过滤
48
+ *
49
+ * @param value
50
+ * @param option
51
+ * @returns
52
+ */
53
+ auotCompleteFilter(value: string, option: string): boolean;
54
+ /**
55
+ * 选好了,加入到列表中
56
+ */
57
+ selectHandler(): void;
58
+ /**
59
+ * watch 无效,于是写到了这里
60
+ *
61
+ * @private
62
+ */
63
+ sendSelected(): void;
64
+ /**
65
+ * 删除树节点
66
+ */
67
+ handleContextMenuDelete(): void;
68
+ /**
69
+ * 测试 API
70
+ */
71
+ handleContextMenuTest(): void;
72
+ };
73
+ watch: {
74
+ selectedApi: {
75
+ deep: boolean;
76
+ handler(v: any): void;
77
+ };
78
+ };
79
+ };
80
+ export default _default;
@@ -0,0 +1,129 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const api_list_dataservice_1 = __importDefault(require("./api-list-dataservice"));
7
+ const api_list_swagger_1 = __importDefault(require("./api-list-swagger"));
8
+ exports.default = {
9
+ props: {
10
+ apiRoot: { type: String, required: true } // 接口前缀
11
+ },
12
+ mixins: [api_list_dataservice_1.default, api_list_swagger_1.default],
13
+ data() {
14
+ return {
15
+ API: this.apiRoot + '/admin',
16
+ showSelector: false,
17
+ selectedTab: 'dataservice',
18
+ treeAllApi: [],
19
+ selectedApi: {
20
+ DataService: {},
21
+ Swagger: {}
22
+ },
23
+ contextSelectdNode: {
24
+ root: {}, node: {}, data: {}
25
+ }
26
+ };
27
+ },
28
+ mounted() {
29
+ this.getDataService();
30
+ this.getSwaggerData();
31
+ },
32
+ methods: {
33
+ /**
34
+ * 自动填充的过滤
35
+ *
36
+ * @param value
37
+ * @param option
38
+ * @returns
39
+ */
40
+ auotCompleteFilter(value, option) {
41
+ return option.toUpperCase().indexOf(value.toUpperCase()) !== -1;
42
+ },
43
+ /**
44
+ * 选好了,加入到列表中
45
+ */
46
+ selectHandler() {
47
+ let arr;
48
+ // if ('dataservice' == this.selectedTab) {
49
+ arr = this.$refs.treeDataservice.getCheckedNodes();
50
+ if (arr && arr.length) {
51
+ arr.forEach((treeNode) => {
52
+ if (treeNode.method && treeNode.title) {
53
+ let key = treeNode.method + '_' + treeNode.title;
54
+ if (!this.selectedApi.DataService[key]) { // 防止重复加入相同的
55
+ this.treeAllApi.push(this.renderDataServiceNode(treeNode.title, treeNode.method, treeNode.cfg, true));
56
+ this.selectedApi.DataService[key] = true;
57
+ }
58
+ else {
59
+ // this.$Message.error(`已加入相同的 ${treeNode.title} API`);
60
+ }
61
+ }
62
+ });
63
+ }
64
+ // } else if ('swagger' == this.selectedTab) {
65
+ arr = this.$refs.treeSwagger.getCheckedNodes();
66
+ if (arr && arr.length) {
67
+ arr.forEach((treeNode) => {
68
+ if (treeNode.method && treeNode.title) {
69
+ let key = treeNode.method + '_' + treeNode.title;
70
+ if (!this.selectedApi.Swagger[key]) { // 防止重复加入相同的
71
+ this.treeAllApi.push(this.renderSwaggerNode(treeNode.title, treeNode.method, true));
72
+ this.selectedApi.Swagger[key] = true;
73
+ }
74
+ else {
75
+ /* if (treeNode.title == '请求参数')
76
+ debugger;
77
+ this.$Message.error(`已加入相同的 ${treeNode.title} API`); */
78
+ }
79
+ }
80
+ });
81
+ }
82
+ // }
83
+ this.sendSelected();
84
+ },
85
+ /**
86
+ * watch 无效,于是写到了这里
87
+ *
88
+ * @private
89
+ */
90
+ sendSelected() {
91
+ let arr = [];
92
+ for (let key in this.selectedApi.DataService) {
93
+ let _arr = key.split('_');
94
+ arr.push({ method: _arr[0], url: key.replace(_arr[0] + '_', '') });
95
+ }
96
+ this.$emit('apiselected', arr);
97
+ },
98
+ /**
99
+ * 删除树节点
100
+ */
101
+ handleContextMenuDelete() {
102
+ let { root, node } = this.contextSelectdNode;
103
+ console.log(node);
104
+ const index = root.indexOf(node);
105
+ this.treeAllApi.splice(index, 1);
106
+ let key = node.node.method + '_' + node.node.title;
107
+ if (this.selectedApi.Swagger[key])
108
+ delete this.selectedApi.Swagger[key];
109
+ if (this.selectedApi.DataService[key])
110
+ delete this.selectedApi.DataService[key];
111
+ },
112
+ /**
113
+ * 测试 API
114
+ */
115
+ handleContextMenuTest() {
116
+ alert('TODO');
117
+ }
118
+ },
119
+ watch: {
120
+ selectedApi: {
121
+ deep: false,
122
+ handler(v) {
123
+ alert(this.$emit);
124
+ this.$emit('apiselected', 888);
125
+ }
126
+ }
127
+ }
128
+ };
129
+ //# sourceMappingURL=api-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-list.js","sourceRoot":"","sources":["../../src/api-selector/api-list.ts"],"names":[],"mappings":"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"}