@ajaxjs/ui 1.3.0 → 1.3.2

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 (134) hide show
  1. package/.browserslistrc +3 -0
  2. package/.eslintrc.js +26 -0
  3. package/babel.config.js +5 -0
  4. package/deprecated/api-helper.zip +0 -0
  5. package/deprecated/api-helper2.zip +0 -0
  6. package/deprecated/api-selector.zip +0 -0
  7. package/deprecated/common-ui.zip +0 -0
  8. package/deprecated/data-source.zip +0 -0
  9. package/deprecated/table-selector.zip +0 -0
  10. package/deprecated/utils.js +220 -0
  11. package/dist/@ajaxjs/widgets.common.js +4084 -0
  12. package/dist/@ajaxjs/widgets.common.js.map +1 -0
  13. package/dist/@ajaxjs/widgets.css +1 -0
  14. package/dist/@ajaxjs/widgets.umd.js +4095 -0
  15. package/dist/@ajaxjs/widgets.umd.js.map +1 -0
  16. package/dist/@ajaxjs/widgets.umd.min.js +2 -0
  17. package/dist/@ajaxjs/widgets.umd.min.js.map +1 -0
  18. package/dist/demo.html +1 -0
  19. package/examples/App.vue +137 -0
  20. package/package.json +50 -41
  21. package/public/favicon.ico +0 -0
  22. package/public/index.html +17 -0
  23. package/{dist → src}/data-source/data-source.ts +16 -14
  24. package/{dist → src}/iam/iam.ts +2 -4
  25. package/{dist → src}/iam/user.vue +19 -16
  26. package/src/index.js +48 -0
  27. package/src/iview-ext/fast-iview-table.ts +131 -0
  28. package/src/iview-ext/fast-iview-table.vue +67 -0
  29. package/{dist/iView-ext/fast-iview-table → src/iview-ext}/list.ts +11 -12
  30. package/{dist/table-selector → src/iview-ext}/table-selector.vue +17 -12
  31. package/{dist/iView-ext → src/iview-ext}/tips.vue +5 -2
  32. package/src/main.ts +7 -0
  33. package/src/shims-tsx.d.ts +11 -0
  34. package/{dist → src}/shims-vue.d.ts +4 -4
  35. package/src/style/common-functions.less +286 -0
  36. package/src/style/reset.less +19 -0
  37. package/src/style/reset2.less +49 -0
  38. package/tsconfig.json +40 -0
  39. package/vue.config.js +14 -0
  40. package/LICENSE +0 -201
  41. package/dist/api-helper/common/arg.vue +0 -46
  42. package/dist/api-helper/common/http-method.vue +0 -53
  43. package/dist/api-helper/common/input-table.vue +0 -128
  44. package/dist/api-helper/document/document-render.d.ts +0 -10
  45. package/dist/api-helper/document/document-render.js +0 -38
  46. package/dist/api-helper/document/document-render.js.map +0 -1
  47. package/dist/api-helper/document/document-render.ts +0 -35
  48. package/dist/api-helper/document/document-render.vue +0 -155
  49. package/dist/api-helper/document/document.d.ts +0 -31
  50. package/dist/api-helper/document/document.js +0 -55
  51. package/dist/api-helper/document/document.js.map +0 -1
  52. package/dist/api-helper/document/document.ts +0 -55
  53. package/dist/api-helper/document/document.vue +0 -78
  54. package/dist/api-helper/document/perview.vue +0 -0
  55. package/dist/api-helper/index.js +0 -142
  56. package/dist/api-helper/index.vue +0 -108
  57. package/dist/api-helper/request-body.vue +0 -66
  58. package/dist/api-helper/table.d.ts +0 -7
  59. package/dist/api-helper/table.js +0 -13
  60. package/dist/api-helper/table.js.map +0 -1
  61. package/dist/api-helper/table.ts +0 -10
  62. package/dist/api-helper/table.vue +0 -103
  63. package/dist/api-helper/xhr.js +0 -100
  64. package/dist/api-helper2/api-helper.d.ts +0 -194
  65. package/dist/api-helper2/api-helper.vue +0 -144
  66. package/dist/api-helper2/bookmark.vue +0 -168
  67. package/dist/api-helper2/common/arg.vue +0 -46
  68. package/dist/api-helper2/common/http-method.vue +0 -53
  69. package/dist/api-helper2/document/document-render.vue +0 -189
  70. package/dist/api-helper2/document/document.vue +0 -130
  71. package/dist/api-helper2/document/perview.vue +0 -0
  72. package/dist/api-helper2/env.vue +0 -140
  73. package/dist/api-helper2/history.vue +0 -116
  74. package/dist/api-helper2/main.vue +0 -70
  75. package/dist/api-helper2/request-body.vue +0 -68
  76. package/dist/api-helper2/table.vue +0 -116
  77. package/dist/api-selector/api-list-dataservice.d.ts +0 -18
  78. package/dist/api-selector/api-list-dataservice.js +0 -209
  79. package/dist/api-selector/api-list-dataservice.js.map +0 -1
  80. package/dist/api-selector/api-list-dataservice.ts +0 -232
  81. package/dist/api-selector/api-list-swagger.d.ts +0 -28
  82. package/dist/api-selector/api-list-swagger.js +0 -179
  83. package/dist/api-selector/api-list-swagger.js.map +0 -1
  84. package/dist/api-selector/api-list-swagger.ts +0 -206
  85. package/dist/api-selector/api-list.d.ts +0 -80
  86. package/dist/api-selector/api-list.js +0 -129
  87. package/dist/api-selector/api-list.js.map +0 -1
  88. package/dist/api-selector/api-list.ts +0 -135
  89. package/dist/api-selector/index.vue +0 -125
  90. package/dist/api-selector/test-dataservice.d.ts +0 -23
  91. package/dist/api-selector/test-dataservice.js +0 -74
  92. package/dist/api-selector/test-dataservice.js.map +0 -1
  93. package/dist/api-selector/test-swagger.d.ts +0 -901
  94. package/dist/api-selector/test-swagger.js +0 -656
  95. package/dist/api-selector/test-swagger.js.map +0 -1
  96. package/dist/data-source/data-source.css +0 -44
  97. package/dist/data-source/data-source.d.ts +0 -14
  98. package/dist/data-source/data-source.html +0 -59
  99. package/dist/data-source/data-source.js +0 -97
  100. package/dist/data-source/data-source.js.map +0 -1
  101. package/dist/iView-ext/fast-iview-table/fast-iview-table.d.ts +0 -37
  102. package/dist/iView-ext/fast-iview-table/fast-iview-table.js +0 -72
  103. package/dist/iView-ext/fast-iview-table/fast-iview-table.js.map +0 -1
  104. package/dist/iView-ext/fast-iview-table/fast-iview-table.ts +0 -75
  105. package/dist/iView-ext/fast-iview-table/fast-iview-table.vue +0 -52
  106. package/dist/iView-ext/fast-iview-table/list.d.ts +0 -44
  107. package/dist/iView-ext/fast-iview-table/list.js +0 -97
  108. package/dist/iView-ext/fast-iview-table/list.js.map +0 -1
  109. package/dist/iam/iam.d.ts +0 -16
  110. package/dist/iam/iam.js +0 -54
  111. package/dist/iam/iam.js.map +0 -1
  112. package/dist/index.d.ts +0 -57
  113. package/dist/index.js +0 -22
  114. package/dist/index.js.map +0 -1
  115. package/dist/index.ts +0 -18
  116. package/dist/libs/entity.d.ts +0 -26
  117. package/dist/libs/entity.js +0 -1
  118. package/dist/libs/entity.js.map +0 -1
  119. package/dist/libs/iview-widgets.d.ts +0 -59
  120. package/dist/libs/iview-widgets.js +0 -2
  121. package/dist/libs/iview-widgets.js.map +0 -1
  122. package/dist/main.d.ts +0 -1
  123. package/dist/main.js +0 -24
  124. package/dist/main.js.map +0 -1
  125. package/dist/main.ts +0 -22
  126. package/dist/table-selector/table-selector.htm +0 -28
  127. package/dist/table-selector/table-selector.js +0 -149
  128. /package/{dist → src}/data-source/data-source.less +0 -0
  129. /package/{dist → src}/data-source/data-source.vue +0 -0
  130. /package/{dist → src}/libs/api-helper.d.ts +0 -0
  131. /package/{dist → src}/libs/api-list.d.ts +0 -0
  132. /package/{dist → src}/libs/common.d.ts +0 -0
  133. /package/{dist → src}/libs/entity.ts +0 -0
  134. /package/{dist → src}/libs/iview-widgets.ts +0 -0
@@ -1,28 +0,0 @@
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;
@@ -1,179 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-list-swagger.js","sourceRoot":"","sources":["../../src/api-selector/api-list-swagger.ts"],"names":[],"mappings":"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"}
@@ -1,206 +0,0 @@
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
- };
@@ -1,80 +0,0 @@
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;
@@ -1,129 +0,0 @@
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"api-list.js","sourceRoot":"","sources":["../../src/api-selector/api-list.ts"],"names":[],"mappings":"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"}