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: {
|
jobTask: {
|
||||||
title: 'JobTask List',
|
title: 'JobTask List',
|
||||||
groupName: 'Group name',
|
groupName: 'Group name',
|
||||||
|
owerName: 'Ower name',
|
||||||
jobName: 'Mission name',
|
jobName: 'Mission name',
|
||||||
argsStr: 'Method parameters',
|
argsStr: 'Method parameters',
|
||||||
shardNum: 'Reduce shard num',
|
shardNum: 'Reduce shard num',
|
||||||
@ -801,6 +802,7 @@ const local: App.I18n.Schema = {
|
|||||||
updateDt: 'Update time',
|
updateDt: 'Update time',
|
||||||
form: {
|
form: {
|
||||||
jobStatus: 'Please enter status',
|
jobStatus: 'Please enter status',
|
||||||
|
owerName: 'Please enter owerName',
|
||||||
maxRetryTimes: 'Please enter maximum number of retry',
|
maxRetryTimes: 'Please enter maximum number of retry',
|
||||||
description: 'Please enter description',
|
description: 'Please enter description',
|
||||||
triggerType: 'Please enter trigger type',
|
triggerType: 'Please enter trigger type',
|
||||||
@ -871,6 +873,7 @@ const local: App.I18n.Schema = {
|
|||||||
oldPassword: 'Old Password',
|
oldPassword: 'Old Password',
|
||||||
newPassword: 'New Password',
|
newPassword: 'New Password',
|
||||||
form: {
|
form: {
|
||||||
|
owerName: 'Please select owername',
|
||||||
role: 'Please enter role',
|
role: 'Please enter role',
|
||||||
password: 'Please enter password',
|
password: 'Please enter password',
|
||||||
username: 'Please enter username',
|
username: 'Please enter username',
|
||||||
|
@ -786,6 +786,7 @@ const local: App.I18n.Schema = {
|
|||||||
jobTask: {
|
jobTask: {
|
||||||
title: '定时任务列表',
|
title: '定时任务列表',
|
||||||
groupName: '组名称',
|
groupName: '组名称',
|
||||||
|
owerName: '负责人',
|
||||||
jobName: '任务名称',
|
jobName: '任务名称',
|
||||||
argsStr: '方法参数',
|
argsStr: '方法参数',
|
||||||
shardNum: 'reduce 分片数',
|
shardNum: 'reduce 分片数',
|
||||||
@ -808,6 +809,7 @@ const local: App.I18n.Schema = {
|
|||||||
updateDt: '更新时间',
|
updateDt: '更新时间',
|
||||||
form: {
|
form: {
|
||||||
jobStatus: '请输入状态',
|
jobStatus: '请输入状态',
|
||||||
|
owerName: '请输入负责人名称',
|
||||||
maxRetryTimes: '请输入最大重试次数',
|
maxRetryTimes: '请输入最大重试次数',
|
||||||
description: '请输入描述',
|
description: '请输入描述',
|
||||||
triggerType: '请输入触发类型',
|
triggerType: '请输入触发类型',
|
||||||
@ -878,6 +880,7 @@ const local: App.I18n.Schema = {
|
|||||||
oldPassword: '旧密码',
|
oldPassword: '旧密码',
|
||||||
newPassword: '新密码',
|
newPassword: '新密码',
|
||||||
form: {
|
form: {
|
||||||
|
owerName: '请选择负责人',
|
||||||
role: '请输入角色',
|
role: '请输入角色',
|
||||||
password: '请输入密码',
|
password: '请输入密码',
|
||||||
username: '请输入用户名',
|
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<{
|
type Job = Common.CommonRecord<{
|
||||||
/** 组名称 */
|
/** 组名称 */
|
||||||
groupName: string;
|
groupName: string;
|
||||||
|
/** 负责人id */
|
||||||
|
owerId: string;
|
||||||
|
/** 负责人名 */
|
||||||
|
owerName: string;
|
||||||
/** 通知场景ids */
|
/** 通知场景ids */
|
||||||
notifyIds: number[];
|
notifyIds: number[];
|
||||||
/** 任务名称 */
|
/** 任务名称 */
|
||||||
@ -1008,6 +1012,7 @@ declare namespace Api {
|
|||||||
Api.Job.Job,
|
Api.Job.Job,
|
||||||
| 'groupName'
|
| 'groupName'
|
||||||
| 'jobName'
|
| 'jobName'
|
||||||
|
| 'owerName'
|
||||||
| 'argsStr'
|
| 'argsStr'
|
||||||
| 'argsType'
|
| 'argsType'
|
||||||
| 'jobStatus'
|
| 'jobStatus'
|
||||||
@ -1269,7 +1274,7 @@ declare namespace Api {
|
|||||||
|
|
||||||
/** userManager search params */
|
/** userManager search params */
|
||||||
type UserManagerSearchParams = CommonType.RecordNullable<
|
type UserManagerSearchParams = CommonType.RecordNullable<
|
||||||
Pick<Api.UserManager.UserManager, 'username' | 'password' | 'checkPassword' | 'role' | 'permissions'> &
|
Pick<Api.UserManager.UserManager, 'id' | 'username' | 'password' | 'checkPassword' | 'role' | 'permissions'> &
|
||||||
CommonSearchParams
|
CommonSearchParams
|
||||||
>;
|
>;
|
||||||
|
|
||||||
|
3
src/typings/app.d.ts
vendored
3
src/typings/app.d.ts
vendored
@ -986,6 +986,7 @@ declare namespace App {
|
|||||||
jobTask: {
|
jobTask: {
|
||||||
title: string;
|
title: string;
|
||||||
groupName: string;
|
groupName: string;
|
||||||
|
owerName: string;
|
||||||
jobName: string;
|
jobName: string;
|
||||||
argsStr: string;
|
argsStr: string;
|
||||||
shardNum: string;
|
shardNum: string;
|
||||||
@ -1009,6 +1010,7 @@ declare namespace App {
|
|||||||
form: {
|
form: {
|
||||||
jobName: string;
|
jobName: string;
|
||||||
jobStatus: string;
|
jobStatus: string;
|
||||||
|
owerName: string;
|
||||||
maxRetryTimes: string;
|
maxRetryTimes: string;
|
||||||
description: string;
|
description: string;
|
||||||
triggerType: string;
|
triggerType: string;
|
||||||
@ -1078,6 +1080,7 @@ declare namespace App {
|
|||||||
oldPassword: string;
|
oldPassword: string;
|
||||||
newPassword: string;
|
newPassword: string;
|
||||||
form: {
|
form: {
|
||||||
|
owerName: string;
|
||||||
role: string;
|
role: string;
|
||||||
password: string;
|
password: string;
|
||||||
username: string;
|
username: string;
|
||||||
|
@ -32,7 +32,8 @@ const { columnChecks, columns, data, getData, loading, mobilePagination, searchP
|
|||||||
size: 10,
|
size: 10,
|
||||||
groupName: null,
|
groupName: null,
|
||||||
jobName: null,
|
jobName: null,
|
||||||
jobStatus: null
|
jobStatus: null,
|
||||||
|
owerName: null
|
||||||
},
|
},
|
||||||
columns: () => [
|
columns: () => [
|
||||||
{
|
{
|
||||||
@ -71,6 +72,12 @@ const { columnChecks, columns, data, getData, loading, mobilePagination, searchP
|
|||||||
align: 'left',
|
align: 'left',
|
||||||
width: 180
|
width: 180
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
key: 'owerName',
|
||||||
|
title: $t('page.jobTask.owerName'),
|
||||||
|
align: 'left',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
{
|
{
|
||||||
key: 'nextTriggerAt',
|
key: 'nextTriggerAt',
|
||||||
title: $t('page.jobTask.nextTriggerAt'),
|
title: $t('page.jobTask.nextTriggerAt'),
|
||||||
@ -313,7 +320,8 @@ function body(): Api.Job.ExportJob {
|
|||||||
jobIds: checkedRowKeys.value,
|
jobIds: checkedRowKeys.value,
|
||||||
groupName: searchParams.groupName,
|
groupName: searchParams.groupName,
|
||||||
jobName: searchParams.jobName,
|
jobName: searchParams.jobName,
|
||||||
jobStatus: searchParams.jobStatus
|
jobStatus: searchParams.jobStatus,
|
||||||
|
owerName: searchParams.owerName
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -61,6 +61,8 @@ type Model = Pick<
|
|||||||
Api.Job.Job,
|
Api.Job.Job,
|
||||||
| 'id'
|
| 'id'
|
||||||
| 'groupName'
|
| 'groupName'
|
||||||
|
| 'owerId'
|
||||||
|
| 'owerName'
|
||||||
| 'notifyIds'
|
| 'notifyIds'
|
||||||
| 'jobName'
|
| 'jobName'
|
||||||
| 'argsStr'
|
| 'argsStr'
|
||||||
@ -98,6 +100,7 @@ function createDefaultModel(): Model {
|
|||||||
return {
|
return {
|
||||||
// @ts-expect-error groupName is required
|
// @ts-expect-error groupName is required
|
||||||
groupName: undefined,
|
groupName: undefined,
|
||||||
|
owerId: '',
|
||||||
notifyIds: [],
|
notifyIds: [],
|
||||||
jobName: '',
|
jobName: '',
|
||||||
argsStr: '',
|
argsStr: '',
|
||||||
@ -122,6 +125,7 @@ function createDefaultModel(): Model {
|
|||||||
type RuleKey = Extract<
|
type RuleKey = Extract<
|
||||||
keyof Model,
|
keyof Model,
|
||||||
| 'groupName'
|
| 'groupName'
|
||||||
|
| 'owerId'
|
||||||
| 'jobName'
|
| 'jobName'
|
||||||
| 'argsType'
|
| 'argsType'
|
||||||
| 'jobStatus'
|
| 'jobStatus'
|
||||||
@ -140,6 +144,7 @@ type RuleKey = Extract<
|
|||||||
|
|
||||||
const rules: Record<RuleKey, App.Global.FormRule> = {
|
const rules: Record<RuleKey, App.Global.FormRule> = {
|
||||||
groupName: defaultRequiredRule,
|
groupName: defaultRequiredRule,
|
||||||
|
owerId: defaultRequiredRule,
|
||||||
jobName: defaultRequiredRule,
|
jobName: defaultRequiredRule,
|
||||||
argsType: defaultRequiredRule,
|
argsType: defaultRequiredRule,
|
||||||
jobStatus: defaultRequiredRule,
|
jobStatus: defaultRequiredRule,
|
||||||
@ -268,6 +273,8 @@ async function handleSubmit() {
|
|||||||
const {
|
const {
|
||||||
id,
|
id,
|
||||||
groupName,
|
groupName,
|
||||||
|
owerId,
|
||||||
|
owerName,
|
||||||
notifyIds,
|
notifyIds,
|
||||||
jobName,
|
jobName,
|
||||||
argsType,
|
argsType,
|
||||||
@ -303,6 +310,8 @@ async function handleSubmit() {
|
|||||||
if (props.operateType === 'add') {
|
if (props.operateType === 'add') {
|
||||||
const { error } = await fetchAddJob({
|
const { error } = await fetchAddJob({
|
||||||
groupName,
|
groupName,
|
||||||
|
owerId,
|
||||||
|
owerName,
|
||||||
notifyIds,
|
notifyIds,
|
||||||
jobName,
|
jobName,
|
||||||
argsStr,
|
argsStr,
|
||||||
@ -329,6 +338,8 @@ async function handleSubmit() {
|
|||||||
const { error } = await fetchEditJob({
|
const { error } = await fetchEditJob({
|
||||||
id,
|
id,
|
||||||
groupName,
|
groupName,
|
||||||
|
owerId,
|
||||||
|
owerName,
|
||||||
notifyIds,
|
notifyIds,
|
||||||
jobName,
|
jobName,
|
||||||
argsStr,
|
argsStr,
|
||||||
@ -461,6 +472,9 @@ const scriptMethodOptions = [
|
|||||||
<NFormItem :label="$t('page.jobTask.groupName')" path="groupName">
|
<NFormItem :label="$t('page.jobTask.groupName')" path="groupName">
|
||||||
<SelectGroup v-model:value="model.groupName" :disabled="props.operateType === 'edit'" />
|
<SelectGroup v-model:value="model.groupName" :disabled="props.operateType === 'edit'" />
|
||||||
</NFormItem>
|
</NFormItem>
|
||||||
|
<NFormItem :label="$t('page.jobTask.owerName')" path="owerId">
|
||||||
|
<SystemUser v-model:value="model.owerId" />
|
||||||
|
</NFormItem>
|
||||||
<NFormItem :label="$t('page.jobTask.jobStatus')" path="jobStatus">
|
<NFormItem :label="$t('page.jobTask.jobStatus')" path="jobStatus">
|
||||||
<NRadioGroup v-model:value="model.jobStatus" name="jobStatus">
|
<NRadioGroup v-model:value="model.jobStatus" name="jobStatus">
|
||||||
<NSpace>
|
<NSpace>
|
||||||
|
@ -42,6 +42,9 @@ function search() {
|
|||||||
clearable
|
clearable
|
||||||
/>
|
/>
|
||||||
</NFormItemGi>
|
</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>
|
</SearchForm>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user