Aaron Wang
2 years ago
committed by
GitHub
6 changed files with 3 additions and 268 deletions
@ -1,109 +0,0 @@
|
||||
/* |
||||
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||
* contributor license agreements. See the NOTICE file distributed with |
||||
* this work for additional information regarding copyright ownership. |
||||
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||
* (the "License"); you may not use this file except in compliance with |
||||
* the License. You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
import { defineComponent, PropType, toRefs, watch } from 'vue' |
||||
import Modal from '@/components/modal' |
||||
import { NForm, NFormItem, NSelect } from 'naive-ui' |
||||
import { useI18n } from 'vue-i18n' |
||||
import { useMove } from './use-move' |
||||
|
||||
const props = { |
||||
show: { |
||||
type: Boolean as PropType<boolean>, |
||||
default: false |
||||
}, |
||||
row: { |
||||
type: Object as PropType<any>, |
||||
default: {} |
||||
} |
||||
} |
||||
|
||||
const MoveModal = defineComponent({ |
||||
name: 'MoveModal', |
||||
props, |
||||
emits: ['refresh', 'cancel'], |
||||
setup(props, ctx) { |
||||
const { t } = useI18n() |
||||
const { variables, handleValidate, getListData } = useMove() |
||||
|
||||
const cancelModal = () => { |
||||
variables.model.targetProcessDefinitionCode = '' |
||||
ctx.emit('cancel') |
||||
} |
||||
|
||||
const confirmModal = () => { |
||||
handleValidate() |
||||
} |
||||
|
||||
watch( |
||||
() => props.show, |
||||
() => { |
||||
variables.taskCode = props.row.taskCode |
||||
variables.processDefinitionCode = props.row.processDefinitionCode |
||||
variables.model.targetProcessDefinitionCode = |
||||
props.row.processDefinitionCode |
||||
|
||||
props.show && getListData() |
||||
} |
||||
) |
||||
|
||||
watch( |
||||
() => variables.refreshTaskDefinition, |
||||
() => { |
||||
if (variables.refreshTaskDefinition) { |
||||
ctx.emit('refresh') |
||||
variables.refreshTaskDefinition = false |
||||
} |
||||
} |
||||
) |
||||
|
||||
return { t, ...toRefs(variables), cancelModal, confirmModal } |
||||
}, |
||||
render() { |
||||
const { t, show, cancelModal, confirmModal } = this |
||||
|
||||
return ( |
||||
<Modal |
||||
title={t('project.task.move')} |
||||
show={show} |
||||
onCancel={cancelModal} |
||||
onConfirm={confirmModal} |
||||
confirmDisabled={!this.model.targetProcessDefinitionCode} |
||||
confirmLoading={this.saving} |
||||
> |
||||
<NForm |
||||
model={this.model} |
||||
rules={this.rules} |
||||
ref='taskDefinitionFormRef' |
||||
> |
||||
<NFormItem |
||||
label={t('project.task.workflow_name')} |
||||
path='alertInstanceIds' |
||||
> |
||||
<NSelect |
||||
placeholder={t('project.task.workflow_name_tips')} |
||||
options={this.model.generalOptions} |
||||
v-model={[this.model.targetProcessDefinitionCode, 'value']} |
||||
/> |
||||
</NFormItem> |
||||
</NForm> |
||||
</Modal> |
||||
) |
||||
} |
||||
}) |
||||
|
||||
export default MoveModal |
@ -1,105 +0,0 @@
|
||||
/* |
||||
* Licensed to the Apache Software Foundation (ASF) under one or more |
||||
* contributor license agreements. See the NOTICE file distributed with |
||||
* this work for additional information regarding copyright ownership. |
||||
* The ASF licenses this file to You under the Apache License, Version 2.0 |
||||
* (the "License"); you may not use this file except in compliance with |
||||
* the License. You may obtain a copy of the License at |
||||
* |
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
import { reactive, ref } from 'vue' |
||||
import { useI18n } from 'vue-i18n' |
||||
import { useAsyncState } from '@vueuse/core' |
||||
import { querySimpleList } from '@/service/modules/process-definition' |
||||
import { useRoute } from 'vue-router' |
||||
import { moveRelation } from '@/service/modules/process-task-relation' |
||||
import type { SimpleListRes } from '@/service/modules/process-definition/types' |
||||
|
||||
export function useMove() { |
||||
const { t } = useI18n() |
||||
const route = useRoute() |
||||
const projectCode = Number(route.params.projectCode) |
||||
|
||||
const variables = reactive({ |
||||
taskCode: ref(''), |
||||
processDefinitionCode: ref(''), |
||||
refreshTaskDefinition: ref(false), |
||||
taskDefinitionFormRef: ref(), |
||||
model: { |
||||
targetProcessDefinitionCode: ref(''), |
||||
generalOptions: [] |
||||
}, |
||||
saving: false, |
||||
rules: { |
||||
targetProcessDefinitionCode: { |
||||
required: true, |
||||
trigger: ['change', 'blur'], |
||||
validator() { |
||||
if (!variables.model.targetProcessDefinitionCode) { |
||||
return new Error(t('project.task.workflow_name_tips')) |
||||
} |
||||
} |
||||
} |
||||
} |
||||
}) |
||||
|
||||
const getListData = () => { |
||||
const { state } = useAsyncState( |
||||
querySimpleList(projectCode).then((res: Array<SimpleListRes>) => { |
||||
variables.model.generalOptions = res.map( |
||||
(item): { label: string; value: number } => { |
||||
return { |
||||
label: item.name, |
||||
value: item.code |
||||
} |
||||
} |
||||
) as any |
||||
}), |
||||
{} |
||||
) |
||||
|
||||
return state |
||||
} |
||||
|
||||
const handleValidate = () => { |
||||
variables.taskDefinitionFormRef.validate((errors: any) => { |
||||
if (errors) { |
||||
return |
||||
} |
||||
moveTask() |
||||
}) |
||||
} |
||||
|
||||
const moveTask = async () => { |
||||
if (variables.saving) return |
||||
variables.saving = true |
||||
try { |
||||
const data = { |
||||
targetProcessDefinitionCode: |
||||
variables.model.targetProcessDefinitionCode, |
||||
taskCode: variables.taskCode, |
||||
processDefinitionCode: variables.processDefinitionCode |
||||
} |
||||
await moveRelation(data, projectCode) |
||||
variables.saving = false |
||||
variables.model.targetProcessDefinitionCode = '' |
||||
variables.refreshTaskDefinition = true |
||||
} catch (err) { |
||||
variables.saving = false |
||||
} |
||||
} |
||||
|
||||
return { |
||||
variables, |
||||
handleValidate, |
||||
getListData |
||||
} |
||||
} |
Loading…
Reference in new issue