feat(sj_1.2.0-beta1): 重试任务任务参数支持多参数

This commit is contained in:
xlsea 2024-07-18 11:11:05 +08:00
parent b135ec5afe
commit 7d428e5b42

View File

@ -1,10 +1,10 @@
<script setup lang="ts"> <script setup lang="ts">
import { computed, reactive, watch } from 'vue'; import { computed, reactive, ref, watch } from 'vue';
import { useFormRules, useNaiveForm } from '@/hooks/common/form'; import { useFormRules, useNaiveForm } from '@/hooks/common/form';
import OperateDrawer from '@/components/common/operate-drawer.vue'; import OperateDrawer from '@/components/common/operate-drawer.vue';
import { $t } from '@/locales'; import { $t } from '@/locales';
import { fetchAddRetryTask, fetchIdempotentIdGenerate } from '@/service/api'; import { fetchAddRetryTask, fetchIdempotentIdGenerate } from '@/service/api';
import { translateOptions } from '@/utils/common'; import { isNotNull, translateOptions } from '@/utils/common';
import { retryTaskStatusTypeOptions } from '@/constants/business'; import { retryTaskStatusTypeOptions } from '@/constants/business';
import CodeMirror from '@/components/common/code-mirror.vue'; import CodeMirror from '@/components/common/code-mirror.vue';
import SelectGroup from '@/components/common/select-group.vue'; import SelectGroup from '@/components/common/select-group.vue';
@ -33,6 +33,7 @@ const visible = defineModel<boolean>('visible', {
default: false default: false
}); });
const argsList = ref<string[]>([]);
const { formRef, validate, restoreValidation } = useNaiveForm(); const { formRef, validate, restoreValidation } = useNaiveForm();
const { defaultRequiredRule } = useFormRules(); const { defaultRequiredRule } = useFormRules();
@ -74,11 +75,31 @@ const rules: Record<RuleKey, App.Global.FormRule> = {
idempotentId: defaultRequiredRule, idempotentId: defaultRequiredRule,
bizNo: defaultRequiredRule, bizNo: defaultRequiredRule,
executorName: defaultRequiredRule, executorName: defaultRequiredRule,
argsStr: defaultRequiredRule, argsStr: { ...defaultRequiredRule, validator: validatorArgsStr },
retryStatus: defaultRequiredRule retryStatus: defaultRequiredRule
}; };
function validatorArgsStr() {
if (argsList.value.length === 0) {
return false;
}
try {
argsList.value.forEach(arg => {
if (!isNotNull(arg)) {
throw new Error($t('form.required'));
}
});
} catch {
return false;
}
return true;
}
function handleUpdateModelWhenEdit() { function handleUpdateModelWhenEdit() {
argsList.value = [];
if (props.operateType === 'add') { if (props.operateType === 'add') {
Object.assign(model, createDefaultModel()); Object.assign(model, createDefaultModel());
return; return;
@ -86,6 +107,7 @@ function handleUpdateModelWhenEdit() {
if (props.operateType === 'edit' && props.rowData) { if (props.operateType === 'edit' && props.rowData) {
Object.assign(model, props.rowData); Object.assign(model, props.rowData);
argsList.value = JSON.parse(props.rowData.argsStr || '[]');
} }
} }
@ -97,14 +119,14 @@ async function handleSubmit() {
await validate(); await validate();
if (props.operateType === 'add') { if (props.operateType === 'add') {
const { groupName, sceneName, idempotentId, bizNo, executorName, argsStr, retryStatus } = model; const { groupName, sceneName, idempotentId, bizNo, executorName, retryStatus } = model;
const { error } = await fetchAddRetryTask({ const { error } = await fetchAddRetryTask({
groupName, groupName,
sceneName, sceneName,
idempotentId, idempotentId,
bizNo, bizNo,
executorName, executorName,
argsStr, argsStr: JSON.stringify(argsList.value),
retryStatus retryStatus
}); });
if (error) return; if (error) return;
@ -184,7 +206,19 @@ async function setIdempotentId() {
/> />
</NFormItem> </NFormItem>
<NFormItem :label="$t('page.retryTask.argsStr')" path="argsStr"> <NFormItem :label="$t('page.retryTask.argsStr')" path="argsStr">
<CodeMirror v-model="model.argsStr" lang="json" :placeholder="$t('page.jobTask.form.argsStr')" /> <NDynamicInput v-model:value="argsList" :on-create="() => ''">
<template #default="{ index }">
<NFormItem
class="w-full"
ignore-path-change
:show-label="false"
:show-feedback="false"
:path="`argsStr[${index}]`"
>
<CodeMirror v-model="argsList[index]" lang="json" :placeholder="$t('page.jobTask.form.argsStr')" />
</NFormItem>
</template>
</NDynamicInput>
</NFormItem> </NFormItem>
<NFormItem :label="$t('page.retryTask.retryStatus')" path="retryStatus"> <NFormItem :label="$t('page.retryTask.retryStatus')" path="retryStatus">
<NSelect <NSelect