From 8f7f3b2b08cf630df92ffb8813227ce48af43de1 Mon Sep 17 00:00:00 2001 From: BAIQI <443543832@qq.com> Date: Thu, 15 Feb 2024 15:46:43 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=8E=A5=E5=8F=A3=E6=B5=8B=E8=AF=95):?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2-50%?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/assets/style/arco-reset.less | 3 + .../ms-common-script/ms-script-menu.vue | 12 +- .../ms-common-script/scriptDefined.vue | 6 +- .../components/localExec.vue | 27 +- .../src/components/business/ms-tree/index.vue | 7 +- .../components/pure/ms-editable-tab/index.vue | 123 ++- .../pure/ms-editable-tab/locale/en-US.ts | 6 + .../pure/ms-editable-tab/locale/zh-CN.ts | 4 + .../models/projectManagement/commonScript.ts | 6 +- frontend/src/utils/index.ts | 6 +- .../api-test/components/condition/content.vue | 30 +- .../requestComposition}/auth.vue | 0 .../requestComposition}/body.vue | 0 .../requestComposition}/header.vue | 0 .../components/requestComposition/index.vue | 747 +++++++++++++++ .../requestComposition}/postcondition.vue | 0 .../requestComposition}/precondition.vue | 0 .../requestComposition}/query.vue | 0 .../requestComposition}/response.vue | 24 +- .../requestComposition}/rest.vue | 0 .../requestComposition}/setting.vue | 0 .../api-test/debug/components/debug/index.vue | 876 ------------------ frontend/src/views/api-test/debug/index.vue | 212 ++++- .../management/api/addDependencyDrawer.vue | 56 ++ .../management/{api.vue => api/apiTable.vue} | 123 +-- .../components/management/api/index.vue | 347 +++++++ .../components/management/index.vue | 48 +- .../management/components/moduleTree.vue | 256 +++-- .../src/views/api-test/management/index.vue | 18 +- .../views/api-test/management/locale/zh-CN.ts | 10 + .../project-management/commonScript/utils.ts | 6 +- .../components/envParams/PostTab.vue | 4 +- .../components/envParams/PreTab.vue | 4 +- 33 files changed, 1779 insertions(+), 1182 deletions(-) rename frontend/src/views/api-test/{debug/components/debug => components/requestComposition}/auth.vue (100%) rename frontend/src/views/api-test/{debug/components/debug => components/requestComposition}/body.vue (100%) rename frontend/src/views/api-test/{debug/components/debug => components/requestComposition}/header.vue (100%) create mode 100644 frontend/src/views/api-test/components/requestComposition/index.vue rename frontend/src/views/api-test/{debug/components/debug => components/requestComposition}/postcondition.vue (100%) rename frontend/src/views/api-test/{debug/components/debug => components/requestComposition}/precondition.vue (100%) rename frontend/src/views/api-test/{debug/components/debug => components/requestComposition}/query.vue (100%) rename frontend/src/views/api-test/{debug/components/debug => components/requestComposition}/response.vue (96%) rename frontend/src/views/api-test/{debug/components/debug => components/requestComposition}/rest.vue (100%) rename frontend/src/views/api-test/{debug/components/debug => components/requestComposition}/setting.vue (100%) delete mode 100644 frontend/src/views/api-test/debug/components/debug/index.vue create mode 100644 frontend/src/views/api-test/management/components/management/api/addDependencyDrawer.vue rename frontend/src/views/api-test/management/components/management/{api.vue => api/apiTable.vue} (88%) create mode 100644 frontend/src/views/api-test/management/components/management/api/index.vue diff --git a/frontend/src/assets/style/arco-reset.less b/frontend/src/assets/style/arco-reset.less index e4951a7273..44adfc7f36 100644 --- a/frontend/src/assets/style/arco-reset.less +++ b/frontend/src/assets/style/arco-reset.less @@ -627,6 +627,9 @@ } /** 开关 **/ +.arco-switch { + margin-left: 2px; // 避免开关圆形左边被遮挡 +} .arco-switch-type-line.arco-switch-small { height: 14px; line-height: 14px; diff --git a/frontend/src/components/business/ms-common-script/ms-script-menu.vue b/frontend/src/components/business/ms-common-script/ms-script-menu.vue index 20688aa1b8..7a5c922d63 100644 --- a/frontend/src/components/business/ms-common-script/ms-script-menu.vue +++ b/frontend/src/components/business/ms-common-script/ms-script-menu.vue @@ -43,27 +43,29 @@ import { useVModel } from '@vueuse/core'; import { Message } from '@arco-design/web-vue'; + import { Language } from '@/components/pure/ms-code-editor/types'; + import { useI18n } from '@/hooks/useI18n'; import { RequestConditionScriptLanguage } from '@/enums/apiEnum'; import type { CommonScriptMenu } from './types'; - import { getCodeTemplate, type Languages, SCRIPT_MENU } from './utils'; + import { getCodeTemplate, SCRIPT_MENU } from './utils'; const { t } = useI18n(); const props = defineProps<{ expand: boolean; - languagesType: Languages | RequestConditionScriptLanguage; + languagesType: Language | RequestConditionScriptLanguage; }>(); const emit = defineEmits<{ (e: 'update:expand', value: boolean): void; - (e: 'update:languagesType', value: Languages): void; + (e: 'update:languagesType', value: Language): void; (e: 'insert', code: string): void; (e: 'formApiImport'): void; // 从api 定义导入 (e: 'insertCommonScript'): void; // 从api 定义导入 - (e: 'updateLanguages', value: Languages): void; // 从api 定义导入 + (e: 'updateLanguages', value: Language): void; // 从api 定义导入 }>(); const innerExpand = useVModel(props, 'expand', emit); @@ -144,7 +146,7 @@ function changeHandler( value: string | number | boolean | Record | (string | number | boolean | Record)[] ) { - innerLanguageType.value = value as Languages; + innerLanguageType.value = value as Language; } diff --git a/frontend/src/components/business/ms-common-script/scriptDefined.vue b/frontend/src/components/business/ms-common-script/scriptDefined.vue index 66492833e0..af011373aa 100644 --- a/frontend/src/components/business/ms-common-script/scriptDefined.vue +++ b/frontend/src/components/business/ms-common-script/scriptDefined.vue @@ -88,14 +88,12 @@ import type { CommonScriptItem } from '@/models/projectManagement/commonScript'; import { RequestConditionScriptLanguage } from '@/enums/apiEnum'; - import { type Languages } from './utils'; - const appStore = useAppStore(); const props = withDefaults( defineProps<{ showType: 'commonScript' | 'executionResult'; // 执行类型 - language: Languages | RequestConditionScriptLanguage; + language: Language | RequestConditionScriptLanguage; code: string; enableRadioSelected?: boolean; executionResult?: string; // 执行结果 @@ -106,7 +104,7 @@ } ); const emit = defineEmits<{ - (e: 'update:language', value: Languages | RequestConditionScriptLanguage): void; + (e: 'update:language', value: Language | RequestConditionScriptLanguage): void; (e: 'update:code', value: string): void; }>(); diff --git a/frontend/src/components/business/ms-personal-drawer/components/localExec.vue b/frontend/src/components/business/ms-personal-drawer/components/localExec.vue index e00b6006ce..98c138ca4b 100644 --- a/frontend/src/components/business/ms-personal-drawer/components/localExec.vue +++ b/frontend/src/components/business/ms-personal-drawer/components/localExec.vue @@ -157,22 +157,23 @@ async function testApi() { try { testApiLoading.value = true; - if (apiConfig.value.id) { - // 已经存在配置 - await updateLocalConfig({ - id: apiConfig.value.id, - userUrl: apiConfig.value.userUrl.trim(), - }); - } else { - const result = await addLocalConfig({ - type: 'API', - userUrl: apiConfig.value.userUrl.trim(), - }); - apiConfig.value.id = result.id; - } const res = await validLocalConfig(apiConfig.value.id); apiConfig.value.status = res ? 1 : 2; if (res) { + // 检测通过才保存配置 + if (apiConfig.value.id) { + // 已经存在配置 + await updateLocalConfig({ + id: apiConfig.value.id, + userUrl: apiConfig.value.userUrl.trim(), + }); + } else { + const result = await addLocalConfig({ + type: 'API', + userUrl: apiConfig.value.userUrl.trim(), + }); + apiConfig.value.id = result.id; + } Message.success(t('ms.personal.testPass')); } else { Message.error(t('ms.personal.testFail')); diff --git a/frontend/src/components/business/ms-tree/index.vue b/frontend/src/components/business/ms-tree/index.vue index dc363990df..e8916bd4fe 100644 --- a/frontend/src/components/business/ms-tree/index.vue +++ b/frontend/src/components/business/ms-tree/index.vue @@ -35,7 +35,11 @@ ActionsItem[]; // 过滤更多操作按钮 }>(), { searchDebounce: 300, diff --git a/frontend/src/components/pure/ms-editable-tab/index.vue b/frontend/src/components/pure/ms-editable-tab/index.vue index 6d91b6b729..331dc6b4e9 100644 --- a/frontend/src/components/pure/ms-editable-tab/index.vue +++ b/frontend/src/components/pure/ms-editable-tab/index.vue @@ -16,7 +16,7 @@ v-for="tab in props.tabs" :key="tab.id" class="ms-editable-tab" - :class="{ active: innerActiveTab === tab.id }" + :class="{ active: innerActiveTab?.id === tab.id }" @click="handleTabClick(tab)" >
@@ -46,6 +46,7 @@ @@ -60,9 +61,9 @@ @@ -82,19 +83,22 @@ import { ActionsItem } from '@/components/pure/ms-table-more-action/types'; import { useI18n } from '@/hooks/useI18n'; + import useModal from '@/hooks/useModal'; import type { TabItem } from './types'; const props = defineProps<{ tabs: TabItem[]; - activeTab: string | number; + activeTab?: TabItem; moreActionList?: ActionsItem[]; limit?: number; // 最多可打开的tab数量 atLeastOne?: boolean; // 是否至少保留一个tab + hideMoreAction?: boolean; // 是否隐藏更多操作 + readonly?: boolean; // 是否只读 }>(); const emit = defineEmits<{ - (e: 'update:tabs', activeTab: string | number): void; - (e: 'update:activeTab', activeTab: string | number): void; + (e: 'update:tabs', tabs: TabItem[]): void; + (e: 'update:activeTab', activeTab: TabItem): void; (e: 'add'): void; (e: 'close', item: TabItem): void; (e: 'change', item: TabItem): void; @@ -102,10 +106,11 @@ }>(); const { t } = useI18n(); + const { openModal } = useModal(); const innerActiveTab = useVModel(props, 'activeTab', emit); const innerTabs = useVModel(props, 'tabs', emit); - const tabNav = ref(null); + const tabNav = ref(); const { arrivedState } = useScroll(tabNav); const isNotOverflow = computed(() => arrivedState.left && arrivedState.right); // 内容是否溢出,用于判断左右滑动按钮是否展示 @@ -129,7 +134,7 @@ }; const scrollToActiveTab = () => { - const activeTabDom = tabNav.value?.querySelector('.tab.active'); + const activeTabDom = tabNav.value?.querySelector('.ms-editable-tab.active'); if (activeTabDom) { const tabRect = activeTabDom.getBoundingClientRect(); const navRect = tabNav.value?.getBoundingClientRect(); @@ -141,22 +146,35 @@ } }; + const defualtMoreActionList = [ + { + eventTag: 'closeAll', + label: t('ms.editableTab.closeAll'), + }, + { + eventTag: 'closeOther', + label: t('ms.editableTab.closeOther'), + }, + ]; + const mergedMoreActionList = computed(() => { + const dl = props.atLeastOne + ? defualtMoreActionList.filter((e) => e.eventTag !== 'closeAll') + : defualtMoreActionList; + return props.moreActionList ? [...dl, ...props.moreActionList] : dl; + }); + watch( () => props.activeTab, - (val) => { - emit('change', props.tabs.find((item) => item.id === val) as TabItem); + () => { + useDraggable('.ms-editable-tab-nav', innerTabs, { + ghostClass: 'ms-editable-tab-ghost', + }); + nextTick(() => { + scrollToActiveTab(); + }); } ); - watch(props.tabs, () => { - useDraggable('.ms-editable-tab-nav', innerTabs, { - ghostClass: 'ms-editable-tab-ghost', - }); - nextTick(() => { - scrollToActiveTab(); - }); - }); - onMounted(() => { const resizeObserver = new ResizeObserver(() => { scrollToActiveTab(); @@ -168,16 +186,75 @@ emit('add'); } + function closeOneTab(item: TabItem) { + const index = innerTabs.value.findIndex((e) => e.id === item.id); + innerTabs.value.splice(index, 1); + if (innerActiveTab.value?.id === item.id && innerTabs.value[0]) { + [innerActiveTab.value] = innerTabs.value; + } + } + function close(item: TabItem) { - emit('close', item); + if (item.unSaved) { + openModal({ + title: t('common.tip'), + content: t('ms.editableTab.closeTabTip'), + type: 'warning', + hideCancel: false, + onBeforeOk: async () => { + closeOneTab(item); + emit('close', item); + }, + }); + } else { + closeOneTab(item); + emit('close', item); + } } function handleTabClick(item: TabItem) { - emit('change', item); - innerActiveTab.value = item.id; + innerActiveTab.value = item; nextTick(() => { tabNav.value?.querySelector('.tab.active')?.scrollIntoView({ behavior: 'smooth', block: 'center' }); }); + emit('change', item); + } + + function executeAction(event: ActionsItem) { + switch (event.eventTag) { + case 'closeAll': + innerTabs.value = innerTabs.value.filter((item) => item.closable === false); + [innerActiveTab.value] = innerTabs.value; + break; + case 'closeOther': + innerTabs.value = innerTabs.value.filter( + (item) => item.id === innerActiveTab.value?.id || item.closable === false + ); + break; + default: + emit('moreActionSelect', event); + break; + } + } + + function handleMoreActionSelect(event: ActionsItem) { + if ( + (event.eventTag === 'closeAll' && innerTabs.value.some((item) => item.unSaved)) || + (event.eventTag === 'closeOther' && + innerTabs.value.some((item) => item.unSaved && item.id !== innerActiveTab.value?.id)) + ) { + openModal({ + title: t('common.tip'), + content: t('ms.editableTab.batchCloseTabTip'), + type: 'warning', + hideCancel: false, + onBeforeOk: async () => { + executeAction(event); + }, + }); + return; + } + executeAction(event); } diff --git a/frontend/src/components/pure/ms-editable-tab/locale/en-US.ts b/frontend/src/components/pure/ms-editable-tab/locale/en-US.ts index ef818f51a6..6f12df8101 100644 --- a/frontend/src/components/pure/ms-editable-tab/locale/en-US.ts +++ b/frontend/src/components/pure/ms-editable-tab/locale/en-US.ts @@ -2,4 +2,10 @@ export default { 'ms.editableTab.arrivedLeft': 'Already reached the far left~', 'ms.editableTab.arrivedRight': 'Already reached the far right~', 'ms.editableTab.limitTip': 'Up to {max} tabs can currently be open', + 'ms.editableTab.closeTabTip': + 'The modified content of this tab has not been saved. The unsaved content will be lost after closing. Are you sure you want to close?', + 'ms.editableTab.batchCloseTabTip': + 'The content of some tabs has not been saved. The unsaved content will be lost after closing. Are you sure you want to close?', + 'ms.editableTab.closeAll': 'Close all', + 'ms.editableTab.closeOther': 'Close other', }; diff --git a/frontend/src/components/pure/ms-editable-tab/locale/zh-CN.ts b/frontend/src/components/pure/ms-editable-tab/locale/zh-CN.ts index c6309fb71a..23ea46e3a5 100644 --- a/frontend/src/components/pure/ms-editable-tab/locale/zh-CN.ts +++ b/frontend/src/components/pure/ms-editable-tab/locale/zh-CN.ts @@ -2,4 +2,8 @@ export default { 'ms.editableTab.arrivedLeft': '到最左侧啦~', 'ms.editableTab.arrivedRight': '到最右侧啦~', 'ms.editableTab.limitTip': '当前最多可打开 {max} 个标签页', + 'ms.editableTab.closeTabTip': '该标签页有改动的内容未保存,关闭后未保存的内容将丢失,确定要关闭吗?', + 'ms.editableTab.batchCloseTabTip': '有标签页的内容未保存,关闭后未保存的内容将丢失,确定要关闭吗?', + 'ms.editableTab.closeAll': '关闭全部', + 'ms.editableTab.closeOther': '关闭其他', }; diff --git a/frontend/src/models/projectManagement/commonScript.ts b/frontend/src/models/projectManagement/commonScript.ts index 5664d0f7e7..441a0dedbf 100644 --- a/frontend/src/models/projectManagement/commonScript.ts +++ b/frontend/src/models/projectManagement/commonScript.ts @@ -1,4 +1,4 @@ -import { type Languages } from '@/components/business/ms-common-script/utils'; +import { Language } from '@/components/pure/ms-code-editor/types'; export interface CommonScriptMenu { title: string; @@ -13,7 +13,7 @@ export interface CommonScriptItem { name: string; tags: string[]; description: string; - type: Languages; // 脚本语言类型 + type: Language; // 脚本语言类型 status: string; // 脚本状态(进行中/已完成) createTime: number; updateTime: number; @@ -29,7 +29,7 @@ export interface AddOrUpdateCommonScript { id?: string; projectId: string; name: string; - type: Languages; + type: Language; status: string; tags: string[]; description: string; diff --git a/frontend/src/utils/index.ts b/frontend/src/utils/index.ts index 25c9f17197..1f077755eb 100644 --- a/frontend/src/utils/index.ts +++ b/frontend/src/utils/index.ts @@ -226,16 +226,16 @@ export function filterTree( tree: TreeNode | TreeNode[] | T | T[], filterFn: (node: TreeNode) => boolean, customChildrenKey = 'children' -): TreeNode[] { +): T[] { if (!Array.isArray(tree)) { tree = [tree]; } - const filteredTree: TreeNode[] = []; + const filteredTree: T[] = []; for (let i = 0; i < tree.length; i++) { const node = tree[i]; // 如果节点满足过滤条件,则保留该节点,并递归过滤子节点 if (filterFn(node)) { - const newNode: TreeNode = { ...node }; + const newNode: T = { ...node }; if (node[customChildrenKey] && node[customChildrenKey].length > 0) { // 递归过滤子节点,并将过滤后的子节点添加到当前节点中 newNode[customChildrenKey] = filterTree(node[customChildrenKey], filterFn, customChildrenKey); diff --git a/frontend/src/views/api-test/components/condition/content.vue b/frontend/src/views/api-test/components/condition/content.vue index 263f6ac990..f860af28df 100644 --- a/frontend/src/views/api-test/components/condition/content.vue +++ b/frontend/src/views/api-test/components/condition/content.vue @@ -8,7 +8,7 @@
- +
+ +
@@ -443,11 +445,19 @@ org.apache.http.client.method . . . '' at line number 2 columns, noDisable: true, }); + + watch( + () => condition.value.params, + (arr) => { + propsRes.value.data = arr as any[]; // 查看详情的时候需要赋值一下 + } + ); + const showQuoteDrawer = ref(false); function saveQuoteScriptHandler(item: any) { condition.value.script = item.script; condition.value.scriptId = item.id; - condition.value.scriptName = item.name; + condition.value.scriptName = item.name; // TODO:详情接口未返回该字段 condition.value.params = (JSON.parse(item.params) || []).map((e: any) => { return { key: e.name, @@ -690,7 +700,7 @@ org.apache.http.client.method . . . '' at line number 2 background-color: var(--color-text-n9); } .condition-content { - @apply flex-1 overflow-y-auto; + @apply flex flex-1 flex-col overflow-y-auto; .ms-scroll-bar(); padding: 16px; diff --git a/frontend/src/views/api-test/debug/components/debug/auth.vue b/frontend/src/views/api-test/components/requestComposition/auth.vue similarity index 100% rename from frontend/src/views/api-test/debug/components/debug/auth.vue rename to frontend/src/views/api-test/components/requestComposition/auth.vue diff --git a/frontend/src/views/api-test/debug/components/debug/body.vue b/frontend/src/views/api-test/components/requestComposition/body.vue similarity index 100% rename from frontend/src/views/api-test/debug/components/debug/body.vue rename to frontend/src/views/api-test/components/requestComposition/body.vue diff --git a/frontend/src/views/api-test/debug/components/debug/header.vue b/frontend/src/views/api-test/components/requestComposition/header.vue similarity index 100% rename from frontend/src/views/api-test/debug/components/debug/header.vue rename to frontend/src/views/api-test/components/requestComposition/header.vue diff --git a/frontend/src/views/api-test/components/requestComposition/index.vue b/frontend/src/views/api-test/components/requestComposition/index.vue new file mode 100644 index 0000000000..8d91304c5a --- /dev/null +++ b/frontend/src/views/api-test/components/requestComposition/index.vue @@ -0,0 +1,747 @@ + + + + + diff --git a/frontend/src/views/api-test/debug/components/debug/postcondition.vue b/frontend/src/views/api-test/components/requestComposition/postcondition.vue similarity index 100% rename from frontend/src/views/api-test/debug/components/debug/postcondition.vue rename to frontend/src/views/api-test/components/requestComposition/postcondition.vue diff --git a/frontend/src/views/api-test/debug/components/debug/precondition.vue b/frontend/src/views/api-test/components/requestComposition/precondition.vue similarity index 100% rename from frontend/src/views/api-test/debug/components/debug/precondition.vue rename to frontend/src/views/api-test/components/requestComposition/precondition.vue diff --git a/frontend/src/views/api-test/debug/components/debug/query.vue b/frontend/src/views/api-test/components/requestComposition/query.vue similarity index 100% rename from frontend/src/views/api-test/debug/components/debug/query.vue rename to frontend/src/views/api-test/components/requestComposition/query.vue diff --git a/frontend/src/views/api-test/debug/components/debug/response.vue b/frontend/src/views/api-test/components/requestComposition/response.vue similarity index 96% rename from frontend/src/views/api-test/debug/components/debug/response.vue rename to frontend/src/views/api-test/components/requestComposition/response.vue index 76613389f0..cb94755ae6 100644 --- a/frontend/src/views/api-test/debug/components/debug/response.vue +++ b/frontend/src/views/api-test/components/requestComposition/response.vue @@ -23,6 +23,7 @@
{{ t('apiTestDebug.responseContent') }}
(); + const props = withDefaults( + defineProps<{ + activeTab: keyof typeof ResponseComposition; + activeLayout?: Direction; + isExpanded: boolean; + response: Response; + hideLayoutSwicth?: boolean; // 隐藏布局切换 + }>(), + { + activeLayout: 'vertical', + hideLayoutSwicth: false, + } + ); const emit = defineEmits<{ (e: 'update:activeLayout', value: Direction): void; (e: 'update:activeTab', value: keyof typeof ResponseComposition): void; @@ -285,7 +293,7 @@ // { // label: t('apiTestDebug.assertion'), // value: ResponseComposition.ASSERTION, - // }, + // }, // TODO:断言暂时没加 ]; const { copy, isSupported } = useClipboard(); @@ -310,7 +318,7 @@ // case ResponseComposition.EXTRACT: // return Object.keys(props.response.extract) // .map((e) => `${e}: ${props.response.extract[e]}`) - // .join('\n'); + // .join('\n'); // TODO:断言暂时没加 default: return ''; } diff --git a/frontend/src/views/api-test/debug/components/debug/rest.vue b/frontend/src/views/api-test/components/requestComposition/rest.vue similarity index 100% rename from frontend/src/views/api-test/debug/components/debug/rest.vue rename to frontend/src/views/api-test/components/requestComposition/rest.vue diff --git a/frontend/src/views/api-test/debug/components/debug/setting.vue b/frontend/src/views/api-test/components/requestComposition/setting.vue similarity index 100% rename from frontend/src/views/api-test/debug/components/debug/setting.vue rename to frontend/src/views/api-test/components/requestComposition/setting.vue diff --git a/frontend/src/views/api-test/debug/components/debug/index.vue b/frontend/src/views/api-test/debug/components/debug/index.vue deleted file mode 100644 index ee59607369..0000000000 --- a/frontend/src/views/api-test/debug/components/debug/index.vue +++ /dev/null @@ -1,876 +0,0 @@ - - - - - diff --git a/frontend/src/views/api-test/debug/index.vue b/frontend/src/views/api-test/debug/index.vue index ffbbf1e926..acfa76843b 100644 --- a/frontend/src/views/api-test/debug/index.vue +++ b/frontend/src/views/api-test/debug/index.vue @@ -7,20 +7,33 @@
@@ -58,35 +71,194 @@ diff --git a/frontend/src/views/api-test/management/components/management/api/addDependencyDrawer.vue b/frontend/src/views/api-test/management/components/management/api/addDependencyDrawer.vue new file mode 100644 index 0000000000..09bd35f1be --- /dev/null +++ b/frontend/src/views/api-test/management/components/management/api/addDependencyDrawer.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/frontend/src/views/api-test/management/components/management/api.vue b/frontend/src/views/api-test/management/components/management/api/apiTable.vue similarity index 88% rename from frontend/src/views/api-test/management/components/management/api.vue rename to frontend/src/views/api-test/management/components/management/api/apiTable.vue index a83104aca0..97bd83aa76 100644 --- a/frontend/src/views/api-test/management/components/management/api.vue +++ b/frontend/src/views/api-test/management/components/management/api/apiTable.vue @@ -1,22 +1,6 @@