feat(sj_1.3.0-beta1): Job任务管理新增负责人
This commit is contained in:
parent
ef2ac40748
commit
df7e9e4eb8
57
src/components/common/system-user.vue
Normal file
57
src/components/common/system-user.vue
Normal file
@ -0,0 +1,57 @@
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import { $t } from '@/locales';
|
||||
import { fetchGetUserPageList } from '@/service/api';
|
||||
|
||||
defineOptions({
|
||||
name: 'SystemUser'
|
||||
});
|
||||
|
||||
interface Props {
|
||||
disabled?: boolean;
|
||||
clearable?: boolean;
|
||||
}
|
||||
|
||||
const props = withDefaults(defineProps<Props>(), {
|
||||
disabled: false,
|
||||
clearable: false
|
||||
});
|
||||
|
||||
const model = defineModel<string | null>();
|
||||
interface Emits {
|
||||
(e: 'update:modelValue', value: string): void;
|
||||
}
|
||||
const emit = defineEmits<Emits>();
|
||||
|
||||
/** 可选组列表 */
|
||||
const userNameList = ref();
|
||||
|
||||
async function getUserNameList() {
|
||||
const { data, error } = await fetchGetUserPageList();
|
||||
if (!error) {
|
||||
userNameList.value = data?.data;
|
||||
}
|
||||
}
|
||||
|
||||
const handleUpdate = (value: string) => {
|
||||
emit('update:modelValue', value);
|
||||
};
|
||||
|
||||
getUserNameList();
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<NSelect
|
||||
v-model:value="model"
|
||||
:placeholder="$t('page.userManager.form.owerName')"
|
||||
:options="userNameList"
|
||||
value-field="id"
|
||||
label-field="username"
|
||||
:disabled="props.disabled"
|
||||
:clearable="props.clearable"
|
||||
filterable
|
||||
@update:value="handleUpdate"
|
||||
/>
|
||||
</template>
|
||||
|
||||
<style scoped></style>
|
@ -779,6 +779,7 @@ const local: App.I18n.Schema = {
|
||||
jobTask: {
|
||||
title: 'JobTask List',
|
||||
groupName: 'Group name',
|
||||
owerName: 'Ower name',
|
||||
jobName: 'Mission name',
|
||||
argsStr: 'Method parameters',
|
||||
shardNum: 'Reduce shard num',
|
||||
@ -801,6 +802,7 @@ const local: App.I18n.Schema = {
|
||||
updateDt: 'Update time',
|
||||
form: {
|
||||
jobStatus: 'Please enter status',
|
||||
owerName: 'Please enter owerName',
|
||||
maxRetryTimes: 'Please enter maximum number of retry',
|
||||
description: 'Please enter description',
|
||||
triggerType: 'Please enter trigger type',
|
||||
@ -871,6 +873,7 @@ const local: App.I18n.Schema = {
|
||||
oldPassword: 'Old Password',
|
||||
newPassword: 'New Password',
|
||||
form: {
|
||||
owerName: 'Please select owername',
|
||||
role: 'Please enter role',
|
||||
password: 'Please enter password',
|
||||
username: 'Please enter username',
|
||||
|
@ -786,6 +786,7 @@ const local: App.I18n.Schema = {
|
||||
jobTask: {
|
||||
title: '定时任务列表',
|
||||
groupName: '组名称',
|
||||
owerName: '负责人',
|
||||
jobName: '任务名称',
|
||||
argsStr: '方法参数',
|
||||
shardNum: 'reduce 分片数',
|
||||
@ -808,6 +809,7 @@ const local: App.I18n.Schema = {
|
||||
updateDt: '更新时间',
|
||||
form: {
|
||||
jobStatus: '请输入状态',
|
||||
owerName: '请输入负责人名称',
|
||||
maxRetryTimes: '请输入最大重试次数',
|
||||
description: '请输入描述',
|
||||
triggerType: '请输入触发类型',
|
||||
@ -878,6 +880,7 @@ const local: App.I18n.Schema = {
|
||||
oldPassword: '旧密码',
|
||||
newPassword: '新密码',
|
||||
form: {
|
||||
owerName: '请选择负责人',
|
||||
role: '请输入角色',
|
||||
password: '请输入密码',
|
||||
username: '请输入用户名',
|
||||
|
7
src/typings/api.d.ts
vendored
7
src/typings/api.d.ts
vendored
@ -958,6 +958,10 @@ declare namespace Api {
|
||||
type Job = Common.CommonRecord<{
|
||||
/** 组名称 */
|
||||
groupName: string;
|
||||
/** 负责人id */
|
||||
owerId: string;
|
||||
/** 负责人名 */
|
||||
owerName: string;
|
||||
/** 通知场景ids */
|
||||
notifyIds: number[];
|
||||
/** 任务名称 */
|
||||
@ -1008,6 +1012,7 @@ declare namespace Api {
|
||||
Api.Job.Job,
|
||||
| 'groupName'
|
||||
| 'jobName'
|
||||
| 'owerName'
|
||||
| 'argsStr'
|
||||
| 'argsType'
|
||||
| 'jobStatus'
|
||||
@ -1269,7 +1274,7 @@ declare namespace Api {
|
||||
|
||||
/** userManager search params */
|
||||
type UserManagerSearchParams = CommonType.RecordNullable<
|
||||
Pick<Api.UserManager.UserManager, 'username' | 'password' | 'checkPassword' | 'role' | 'permissions'> &
|
||||
Pick<Api.UserManager.UserManager, 'id' | 'username' | 'password' | 'checkPassword' | 'role' | 'permissions'> &
|
||||
CommonSearchParams
|
||||
>;
|
||||
|
||||
|
3
src/typings/app.d.ts
vendored
3
src/typings/app.d.ts
vendored
@ -986,6 +986,7 @@ declare namespace App {
|
||||
jobTask: {
|
||||
title: string;
|
||||
groupName: string;
|
||||
owerName: string;
|
||||
jobName: string;
|
||||
argsStr: string;
|
||||
shardNum: string;
|
||||
@ -1009,6 +1010,7 @@ declare namespace App {
|
||||
form: {
|
||||
jobName: string;
|
||||
jobStatus: string;
|
||||
owerName: string;
|
||||
maxRetryTimes: string;
|
||||
description: string;
|
||||
triggerType: string;
|
||||
@ -1078,6 +1080,7 @@ declare namespace App {
|
||||
oldPassword: string;
|
||||
newPassword: string;
|
||||
form: {
|
||||
owerName: string;
|
||||
role: string;
|
||||
password: string;
|
||||
username: string;
|
||||
|
@ -32,7 +32,8 @@ const { columnChecks, columns, data, getData, loading, mobilePagination, searchP
|
||||
size: 10,
|
||||
groupName: null,
|
||||
jobName: null,
|
||||
jobStatus: null
|
||||
jobStatus: null,
|
||||
owerName: null
|
||||
},
|
||||
columns: () => [
|
||||
{
|
||||
@ -71,6 +72,12 @@ const { columnChecks, columns, data, getData, loading, mobilePagination, searchP
|
||||
align: 'left',
|
||||
width: 180
|
||||
},
|
||||
{
|
||||
key: 'owerName',
|
||||
title: $t('page.jobTask.owerName'),
|
||||
align: 'left',
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
key: 'nextTriggerAt',
|
||||
title: $t('page.jobTask.nextTriggerAt'),
|
||||
@ -313,7 +320,8 @@ function body(): Api.Job.ExportJob {
|
||||
jobIds: checkedRowKeys.value,
|
||||
groupName: searchParams.groupName,
|
||||
jobName: searchParams.jobName,
|
||||
jobStatus: searchParams.jobStatus
|
||||
jobStatus: searchParams.jobStatus,
|
||||
owerName: searchParams.owerName
|
||||
};
|
||||
}
|
||||
|
||||
|
@ -61,6 +61,8 @@ type Model = Pick<
|
||||
Api.Job.Job,
|
||||
| 'id'
|
||||
| 'groupName'
|
||||
| 'owerId'
|
||||
| 'owerName'
|
||||
| 'notifyIds'
|
||||
| 'jobName'
|
||||
| 'argsStr'
|
||||
@ -98,6 +100,7 @@ function createDefaultModel(): Model {
|
||||
return {
|
||||
// @ts-expect-error groupName is required
|
||||
groupName: undefined,
|
||||
owerId: '',
|
||||
notifyIds: [],
|
||||
jobName: '',
|
||||
argsStr: '',
|
||||
@ -122,6 +125,7 @@ function createDefaultModel(): Model {
|
||||
type RuleKey = Extract<
|
||||
keyof Model,
|
||||
| 'groupName'
|
||||
| 'owerId'
|
||||
| 'jobName'
|
||||
| 'argsType'
|
||||
| 'jobStatus'
|
||||
@ -140,6 +144,7 @@ type RuleKey = Extract<
|
||||
|
||||
const rules: Record<RuleKey, App.Global.FormRule> = {
|
||||
groupName: defaultRequiredRule,
|
||||
owerId: defaultRequiredRule,
|
||||
jobName: defaultRequiredRule,
|
||||
argsType: defaultRequiredRule,
|
||||
jobStatus: defaultRequiredRule,
|
||||
@ -268,6 +273,8 @@ async function handleSubmit() {
|
||||
const {
|
||||
id,
|
||||
groupName,
|
||||
owerId,
|
||||
owerName,
|
||||
notifyIds,
|
||||
jobName,
|
||||
argsType,
|
||||
@ -303,6 +310,8 @@ async function handleSubmit() {
|
||||
if (props.operateType === 'add') {
|
||||
const { error } = await fetchAddJob({
|
||||
groupName,
|
||||
owerId,
|
||||
owerName,
|
||||
notifyIds,
|
||||
jobName,
|
||||
argsStr,
|
||||
@ -329,6 +338,8 @@ async function handleSubmit() {
|
||||
const { error } = await fetchEditJob({
|
||||
id,
|
||||
groupName,
|
||||
owerId,
|
||||
owerName,
|
||||
notifyIds,
|
||||
jobName,
|
||||
argsStr,
|
||||
@ -461,6 +472,9 @@ const scriptMethodOptions = [
|
||||
<NFormItem :label="$t('page.jobTask.groupName')" path="groupName">
|
||||
<SelectGroup v-model:value="model.groupName" :disabled="props.operateType === 'edit'" />
|
||||
</NFormItem>
|
||||
<NFormItem :label="$t('page.jobTask.owerName')" path="owerId">
|
||||
<SystemUser v-model:value="model.owerId" />
|
||||
</NFormItem>
|
||||
<NFormItem :label="$t('page.jobTask.jobStatus')" path="jobStatus">
|
||||
<NRadioGroup v-model:value="model.jobStatus" name="jobStatus">
|
||||
<NSpace>
|
||||
|
@ -42,6 +42,9 @@ function search() {
|
||||
clearable
|
||||
/>
|
||||
</NFormItemGi>
|
||||
<NFormItemGi span="24 s:12 m:6" :label="$t('page.jobTask.owerName')" path="owerName" class="pr-24px">
|
||||
<NInput v-model:value="model.owerName" :placeholder="$t('page.jobTask.form.owerName')" clearable />
|
||||
</NFormItemGi>
|
||||
</SearchForm>
|
||||
</template>
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user