feat(接口测试): 脚本操作抽屜

This commit is contained in:
WangXu10 2024-03-19 15:28:29 +08:00 committed by 刘瑞斌
parent 324d55e8e7
commit 855fd79533
4 changed files with 93 additions and 1 deletions

View File

@ -125,6 +125,18 @@
</a-popover> </a-popover>
</div> </div>
<div class="flex items-center gap-[8px]"> <div class="flex items-center gap-[8px]">
<a-button
v-if="props.isFormat"
type="outline"
class="arco-btn-outline--secondary p-[0_8px]"
size="mini"
@click="formatCoding"
>
<template #icon>
<MsIcon type="icon-icon_clear" class="text-var(--color-text-4)" size="12" />
</template>
{{ t('project.commonScript.formatting') }}
</a-button>
<a-button type="outline" class="arco-btn-outline--secondary p-[0_8px]" size="mini" @click="undoScript"> <a-button type="outline" class="arco-btn-outline--secondary p-[0_8px]" size="mini" @click="undoScript">
<template #icon> <template #icon>
<MsIcon type="icon-icon_undo_outlined" class="text-var(--color-text-4)" size="12" /> <MsIcon type="icon-icon_undo_outlined" class="text-var(--color-text-4)" size="12" />
@ -462,6 +474,7 @@
requestRadioTextProps?: Record<string, any>; // requestRadioTextProps?: Record<string, any>; //
showPrePostRequest?: boolean; // showPrePostRequest?: boolean; //
totalList?: ExecuteConditionProcessor[]; // totalList?: ExecuteConditionProcessor[]; //
isFormat?: boolean;
}>(), }>(),
{ {
showAssociatedScene: false, showAssociatedScene: false,
@ -541,6 +554,9 @@ if (!result){
function clearScript() { function clearScript() {
condition.value.script = ''; condition.value.script = '';
} }
function formatCoding() {
scriptDefinedRef.value?.formatCoding();
}
/** /**
* 复制条件 * 复制条件

View File

@ -5,19 +5,89 @@
:width="960" :width="960"
no-content-padding no-content-padding
disabled-width-drag disabled-width-drag
@cancel="handleDrawerCancel"
> >
waiting scriptOperation <div class="ml-[16px] mt-[10px]">
{{ t('apiScenario.scriptOperationName') }}
</div>
<div class="ml-[16px] mt-[3px] max-w-[70%]">
<a-input
v-model="scriptName"
:placeholder="t('apiScenario.scriptOperationNamePlaceholder')"
:max-length="255"
size="small"
/>
</div>
<div class="mt-[10px] flex h-[calc(100%-40px)] gap-[8px]">
<conditionContent v-model:data="activeItem" :is-build-in="true" :is-format="true" />
</div>
<template #footer>
<a-button type="secondary" @click="handleDrawerCancel">
{{ t('common.cancel') }}
</a-button>
<a-button type="secondary" @click="saveAndContinue">
{{ t('common.saveAndContinue') }}
</a-button>
<a-button type="primary" @click="save">
{{ t('common.add') }}
</a-button>
</template>
</MsDrawer> </MsDrawer>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { LanguageEnum } from '@/components/pure/ms-code-editor/types';
import MsDrawer from '@/components/pure/ms-drawer/index.vue'; import MsDrawer from '@/components/pure/ms-drawer/index.vue';
import conditionContent from '@/views/api-test/components/condition/content.vue';
import { useI18n } from '@/hooks/useI18n'; import { useI18n } from '@/hooks/useI18n';
import { ExecuteConditionProcessor, ScriptProcessor } from '@/models/apiTest/common';
import { RequestConditionProcessor } from '@/enums/apiEnum';
const scriptName = ref('');
const activeItem = ref({
processorType: RequestConditionProcessor.SCRIPT,
enableCommonScript: false,
script: '',
scriptLanguage: LanguageEnum.BEANSHELL,
commonScriptInfo: {},
} as ExecuteConditionProcessor);
const { t } = useI18n(); const { t } = useI18n();
const visible = defineModel<boolean>('visible', { required: true }); const visible = defineModel<boolean>('visible', { required: true });
const emit = defineEmits<{
(e: 'save', name: string, scriptProcessor: ExecuteConditionProcessor): void;
}>();
function resetField() {
scriptName.value = '';
activeItem.value = {
processorType: RequestConditionProcessor.SCRIPT,
enableCommonScript: false,
script: '',
scriptLanguage: LanguageEnum.BEANSHELL,
commonScriptInfo: {},
} as ExecuteConditionProcessor;
}
function handleDrawerCancel() {
resetField();
visible.value = false;
}
function saveAndContinue() {
emit('save', scriptName.value, activeItem.value as ScriptProcessor);
resetField();
}
function save() {
emit('save', scriptName.value, activeItem.value as ScriptProcessor);
resetField();
visible.value = false;
}
</script> </script>
<style lang="less" scoped></style> <style lang="less" scoped></style>

View File

@ -78,4 +78,7 @@ export default {
'api_scenario.recycle.list': 'Recycle list', 'api_scenario.recycle.list': 'Recycle list',
'api_scenario.recycle.batchCleanOut': 'Delete', 'api_scenario.recycle.batchCleanOut': 'Delete',
'api_scenario.table.searchPlaceholder': 'Search by ID/Name/Tag', 'api_scenario.table.searchPlaceholder': 'Search by ID/Name/Tag',
'apiScenario.scriptOperationName': 'Script operation name',
'apiScenario.scriptOperationNamePlaceholder': 'Please enter the script operation name',
}; };

View File

@ -139,4 +139,7 @@ export default {
'apiScenario.quoteTableSearchTip': '通过路径或名称搜索', 'apiScenario.quoteTableSearchTip': '通过路径或名称搜索',
'apiScenario.collapseAll': '收起全部子模块', 'apiScenario.collapseAll': '收起全部子模块',
'apiScenario.expandAll': '展开全部子模块', 'apiScenario.expandAll': '展开全部子模块',
'apiScenario.scriptOperationName': '脚本操作名称',
'apiScenario.scriptOperationNamePlaceholder': '请输入脚本操作名称',
}; };