[Bug-13008] [UI] When using the complement function, turn on the dependent mode to generate multiple unrelated workflow instances (#13009)
* Fix dirty data generated by dependent nodes.
This commit is contained in:
parent
3579008c45
commit
99b86d112b
|
|
@ -29,7 +29,9 @@ import {
|
|||
import { Router, useRouter } from 'vue-router'
|
||||
import type {
|
||||
IJsonItem,
|
||||
IDependpendItem,
|
||||
IDependentItem,
|
||||
IDependentItemOptions,
|
||||
IDependTaskOptions,
|
||||
IDependTask,
|
||||
ITaskState,
|
||||
IDateType
|
||||
|
|
@ -49,6 +51,7 @@ export function useDependent(model: { [field: string]: any }): IJsonItem[] {
|
|||
const taskCache = {} as {
|
||||
[key: number]: { label: string; value: number }[]
|
||||
}
|
||||
const selectOptions = ref([] as IDependTaskOptions[])
|
||||
|
||||
const CYCLE_LIST = [
|
||||
{
|
||||
|
|
@ -236,25 +239,30 @@ export function useDependent(model: { [field: string]: any }): IJsonItem[] {
|
|||
watch(
|
||||
() => model.dependTaskList,
|
||||
(value) => {
|
||||
value.forEach((item: IDependTask) => {
|
||||
selectOptions.value = []
|
||||
value.forEach((item: IDependTask, taskIndex: number) => {
|
||||
if (!item.dependItemList?.length) return
|
||||
|
||||
item.dependItemList?.forEach(async (dependItem: IDependpendItem) => {
|
||||
const itemListOptions = ref([] as IDependentItemOptions[])
|
||||
item.dependItemList?.forEach(async (dependItem: IDependentItem, itemIndex: number) => {
|
||||
itemListOptions.value[itemIndex] = {}
|
||||
if (dependItem.projectCode) {
|
||||
dependItem.definitionCodeOptions = await getProcessList(
|
||||
itemListOptions.value[itemIndex].definitionCodeOptions = await getProcessList(
|
||||
dependItem.projectCode
|
||||
)
|
||||
}
|
||||
if (dependItem.projectCode && dependItem.definitionCode) {
|
||||
dependItem.depTaskCodeOptions = await getTaskList(
|
||||
itemListOptions.value[itemIndex].depTaskCodeOptions = await getTaskList(
|
||||
dependItem.projectCode,
|
||||
dependItem.definitionCode
|
||||
)
|
||||
}
|
||||
if (dependItem.cycle) {
|
||||
dependItem.dateOptions = DATE_LIST[dependItem.cycle]
|
||||
itemListOptions.value[itemIndex].dateOptions = DATE_LIST[dependItem.cycle]
|
||||
}
|
||||
})
|
||||
selectOptions.value[taskIndex] = {} as IDependTaskOptions
|
||||
selectOptions.value[taskIndex].dependItemList = itemListOptions.value
|
||||
})
|
||||
}
|
||||
)
|
||||
|
|
@ -277,7 +285,13 @@ export function useDependent(model: { [field: string]: any }): IJsonItem[] {
|
|||
filterable: true,
|
||||
onUpdateValue: async (projectCode: number) => {
|
||||
const item = model.dependTaskList[i].dependItemList[j]
|
||||
item.definitionCodeOptions = await getProcessList(projectCode)
|
||||
const options = selectOptions?.value[i] || {}
|
||||
const itemListOptions = options?.dependItemList || []
|
||||
const itemOptions = {} as IDependentItemOptions
|
||||
itemOptions.definitionCodeOptions = await getProcessList(projectCode)
|
||||
itemListOptions[j] = itemOptions
|
||||
options.dependItemList = itemListOptions
|
||||
selectOptions.value[i] = options
|
||||
item.depTaskCode = null
|
||||
item.definitionCode = null
|
||||
}
|
||||
|
|
@ -303,16 +317,15 @@ export function useDependent(model: { [field: string]: any }): IJsonItem[] {
|
|||
filterable: true,
|
||||
onUpdateValue: async (processCode: number) => {
|
||||
const item = model.dependTaskList[i].dependItemList[j]
|
||||
item.depTaskCodeOptions = await getTaskList(
|
||||
selectOptions.value[i].dependItemList[j].depTaskCodeOptions = await getTaskList(
|
||||
item.projectCode,
|
||||
processCode
|
||||
)
|
||||
item.depTaskCode = 0
|
||||
}
|
||||
},
|
||||
options:
|
||||
model.dependTaskList[i]?.dependItemList[j]
|
||||
?.definitionCodeOptions || [],
|
||||
options: selectOptions.value[i]?.dependItemList[j]
|
||||
?.definitionCodeOptions || [],
|
||||
path: `dependTaskList.${i}.dependItemList.${j}.definitionCode`,
|
||||
rule: {
|
||||
required: true,
|
||||
|
|
@ -333,7 +346,7 @@ export function useDependent(model: { [field: string]: any }): IJsonItem[] {
|
|||
filterable: true
|
||||
},
|
||||
options:
|
||||
model.dependTaskList[i]?.dependItemList[j]?.depTaskCodeOptions ||
|
||||
selectOptions.value[i]?.dependItemList[j]?.depTaskCodeOptions ||
|
||||
[],
|
||||
path: `dependTaskList.${i}.dependItemList.${j}.depTaskCode`,
|
||||
rule: {
|
||||
|
|
@ -353,7 +366,7 @@ export function useDependent(model: { [field: string]: any }): IJsonItem[] {
|
|||
name: t('project.node.cycle_time'),
|
||||
props: {
|
||||
onUpdateValue: (value: IDateType) => {
|
||||
model.dependTaskList[i].dependItemList[j].dateOptions =
|
||||
selectOptions.value[i].dependItemList[j].dateOptions =
|
||||
DATE_LIST[value]
|
||||
model.dependTaskList[i].dependItemList[j].dateValue = null
|
||||
}
|
||||
|
|
@ -376,7 +389,7 @@ export function useDependent(model: { [field: string]: any }): IJsonItem[] {
|
|||
span: 10,
|
||||
name: ' ',
|
||||
options:
|
||||
model.dependTaskList[i]?.dependItemList[j]?.dateOptions || [],
|
||||
selectOptions.value[i]?.dependItemList[j]?.dateOptions || [],
|
||||
path: `dependTaskList.${i}.dependItemList.${j}.dateValue`,
|
||||
rule: {
|
||||
trigger: ['input', 'blur'],
|
||||
|
|
|
|||
|
|
@ -15,15 +15,14 @@
|
|||
* limitations under the License.
|
||||
*/
|
||||
|
||||
import { omit, cloneDeep } from 'lodash'
|
||||
import { omit } from 'lodash'
|
||||
import type {
|
||||
INodeData,
|
||||
ITaskData,
|
||||
ITaskParams,
|
||||
ISqoopTargetParams,
|
||||
ISqoopSourceParams,
|
||||
ILocalParam,
|
||||
IDependTask
|
||||
ILocalParam
|
||||
} from './types'
|
||||
|
||||
export function formatParams(data: INodeData): {
|
||||
|
|
@ -261,21 +260,9 @@ export function formatParams(data: INodeData): {
|
|||
taskParams.xmx = data.xmx
|
||||
}
|
||||
if (data.taskType === 'DEPENDENT') {
|
||||
const dependTaskList = cloneDeep(data.dependTaskList)?.map(
|
||||
(taskItem: IDependTask) => {
|
||||
if (taskItem.dependItemList?.length) {
|
||||
taskItem.dependItemList.forEach((dependItem) => {
|
||||
delete dependItem.definitionCodeOptions
|
||||
delete dependItem.depTaskCodeOptions
|
||||
delete dependItem.dateOptions
|
||||
})
|
||||
}
|
||||
return taskItem
|
||||
}
|
||||
)
|
||||
taskParams.dependence = {
|
||||
relation: data.relation,
|
||||
dependTaskList: dependTaskList
|
||||
dependTaskList: data.dependTaskList
|
||||
}
|
||||
}
|
||||
if (data.taskType === 'DATA_QUALITY') {
|
||||
|
|
|
|||
|
|
@ -69,12 +69,19 @@ interface IResponseJsonItem extends Omit<IJsonItemParams, 'type'> {
|
|||
emit: 'change'[]
|
||||
}
|
||||
|
||||
interface IDependpendItem {
|
||||
depTaskCode?: number
|
||||
status?: 'SUCCESS' | 'FAILURE'
|
||||
interface IDependentItemOptions {
|
||||
definitionCodeOptions?: IOption[]
|
||||
depTaskCodeOptions?: IOption[]
|
||||
dateOptions?: IOption[]
|
||||
}
|
||||
|
||||
interface IDependTaskOptions {
|
||||
dependItemList: IDependentItemOptions[]
|
||||
}
|
||||
|
||||
interface IDependentItem {
|
||||
depTaskCode?: number
|
||||
status?: 'SUCCESS' | 'FAILURE'
|
||||
projectCode?: number
|
||||
definitionCode?: number
|
||||
cycle?: 'month' | 'week' | 'day' | 'hour'
|
||||
|
|
@ -85,7 +92,7 @@ interface IDependTask {
|
|||
condition?: string
|
||||
nextNode?: number
|
||||
relation?: RelationType
|
||||
dependItemList?: IDependpendItem[]
|
||||
dependItemList?: IDependentItem[]
|
||||
}
|
||||
|
||||
interface ISwitchResult {
|
||||
|
|
@ -459,7 +466,9 @@ export {
|
|||
ISqoopSourceParams,
|
||||
ISqoopTargetParams,
|
||||
IDependTask,
|
||||
IDependpendItem,
|
||||
IDependentItem,
|
||||
IDependentItemOptions,
|
||||
IDependTaskOptions,
|
||||
IFormItem,
|
||||
IJsonItem,
|
||||
FormRules,
|
||||
|
|
|
|||
Loading…
Reference in New Issue