!80 czh-20260702-流程列表支持修改标题与截止时间同步更新流程变量
Merge pull request !80 from 陈志浩/fix/process-20260702
This commit is contained in:
@@ -18,6 +18,8 @@ enum Api {
|
||||
startProcessSchedules = '/tasktask/taskTask/flow-schedules',
|
||||
queryByBusinessId = '/tasktask/taskTask/queryByBusinessId',
|
||||
deleteSingleProcess = '/tasktask/taskTask/deleteSingleProcess',
|
||||
deletePendingTask = '/tasktask/taskTask/deletePendingTask',
|
||||
updateTitleAndDeadline = '/tasktask/taskTask/updateTitleAndDeadline',
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -184,6 +186,22 @@ export const deleteSingleProcess = (params) => {
|
||||
return defHttp.post({ url: Api.deleteSingleProcess, params }, { joinParamsToUrl: true, isTransformResponse: false });
|
||||
};
|
||||
|
||||
/**
|
||||
* 删除未发起的待处理任务(无流程实例ID的周期性任务记录)
|
||||
* @param params { taskId: string }
|
||||
*/
|
||||
export const deletePendingTask = (params) => {
|
||||
return defHttp.post({ url: Api.deletePendingTask, params }, { joinParamsToUrl: true, isTransformResponse: false });
|
||||
};
|
||||
|
||||
/**
|
||||
* 修改流程标题和截止时间
|
||||
* @param params { taskId: string, title: string, requireFinishDate: string }
|
||||
*/
|
||||
export const updateTitleAndDeadline = (params) => {
|
||||
return defHttp.post({ url: Api.updateTitleAndDeadline, params }, { joinParamsToUrl: true, isTransformResponse: false });
|
||||
};
|
||||
|
||||
/**
|
||||
* 【用于评论功能】自定义文件上传-方法
|
||||
*/
|
||||
|
||||
@@ -8,6 +8,33 @@
|
||||
</BasicTable>
|
||||
</div>
|
||||
<BpmPictureModal @register="registerBpmModal" />
|
||||
<j-modal
|
||||
title="修改流程信息"
|
||||
:width="460"
|
||||
:visible="editModalVisible"
|
||||
:confirmLoading="editLoading"
|
||||
wrapClassName="edit-process-modal"
|
||||
@ok="handleEditConfirm"
|
||||
@cancel="handleEditCancel"
|
||||
cancelText="取消"
|
||||
>
|
||||
<div style="padding: 8px 16px 0;">
|
||||
<a-form :model="editForm" :label-col="{ style: { width: '100px' } }" :wrapper-col="{ span: 24 }">
|
||||
<a-form-item label="流程标题" style="margin-bottom: 14px;">
|
||||
<a-input v-model:value="editForm.title" placeholder="请输入流程标题" allow-clear />
|
||||
</a-form-item>
|
||||
<a-form-item label="要求完成日期" style="margin-bottom: 0;">
|
||||
<a-date-picker
|
||||
v-model:value="editForm.requireFinishDate"
|
||||
valueFormat="YYYY-MM-DD"
|
||||
placeholder="请选择要求完成日期"
|
||||
style="width: 100%"
|
||||
:getPopupContainer="(node) => node?.parentNode"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-form>
|
||||
</div>
|
||||
</j-modal>
|
||||
<j-modal
|
||||
title="审批历史"
|
||||
:width="approvalHistoryModalWidth"
|
||||
@@ -22,12 +49,12 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { nextTick, ref } from 'vue';
|
||||
import { nextTick, reactive, ref } from 'vue';
|
||||
import { BasicColumn, BasicTable, TableAction, useTable } from '/@/components/Table';
|
||||
import JModal from '/@/components/Modal/src/JModal/JModal.vue';
|
||||
import { useModal } from '/@/components/Modal';
|
||||
import { columns } from './QueryProcessList.data';
|
||||
import { deleteSingleProcess, queryByBusinessId } from '/@/api/common/api';
|
||||
import { deleteSingleProcess, deletePendingTask, updateTitleAndDeadline, queryByBusinessId } from '/@/api/common/api';
|
||||
import { useMessage } from '/@/hooks/web/useMessage';
|
||||
import TaskApprovalHistoryContent from '/@/views/super/bpm/process/personalOffice/myHandleTask/content/TaskApprovalHistoryContent.vue';
|
||||
|
||||
@@ -51,6 +78,13 @@
|
||||
const approvalHistoryVisible = ref(false);
|
||||
const approvalHistoryFormData = ref<Recordable>({});
|
||||
const approvalHistoryRef = ref();
|
||||
const editModalVisible = ref(false);
|
||||
const editLoading = ref(false);
|
||||
const currentEditRecord = ref<Recordable>({});
|
||||
const editForm = reactive({
|
||||
title: '',
|
||||
requireFinishDate: undefined as string | undefined,
|
||||
});
|
||||
const [registerBpmModal, { openModal: bpmPicModal }] = useModal();
|
||||
|
||||
const [registerTable, { setColumns, setTableData, reload, clearSelectedRowKeys }] = useTable({
|
||||
@@ -76,12 +110,12 @@
|
||||
actionColumn: {
|
||||
title: '操作',
|
||||
dataIndex: 'action',
|
||||
width: 240,
|
||||
width: 320,
|
||||
fixed: 'right',
|
||||
slots: { customRender: 'action' },
|
||||
},
|
||||
scroll: {
|
||||
x: tableScrollX,
|
||||
x: tableScrollX + 80,
|
||||
y: tableBodyHeight,
|
||||
},
|
||||
});
|
||||
@@ -110,6 +144,7 @@
|
||||
setColumns(defaultColumns);
|
||||
setTableData([]);
|
||||
handleApprovalHistoryCancel();
|
||||
handleEditCancel();
|
||||
clearSelectedRowKeys();
|
||||
}
|
||||
|
||||
@@ -141,10 +176,73 @@
|
||||
approvalHistoryFormData.value = {};
|
||||
}
|
||||
|
||||
function handleEditProcess(record) {
|
||||
currentEditRecord.value = record;
|
||||
editForm.title = record?.title || '';
|
||||
editForm.requireFinishDate = record?.requireFinishDate
|
||||
? record.requireFinishDate.length > 10
|
||||
? record.requireFinishDate.substring(0, 10)
|
||||
: record.requireFinishDate
|
||||
: undefined;
|
||||
editModalVisible.value = true;
|
||||
}
|
||||
|
||||
async function handleEditConfirm() {
|
||||
if (!editForm.title?.trim()) {
|
||||
createMessage.error('标题不能为空');
|
||||
return;
|
||||
}
|
||||
if (!editForm.requireFinishDate) {
|
||||
createMessage.error('要求完成日期不能为空');
|
||||
return;
|
||||
}
|
||||
const taskId = currentEditRecord.value?.id;
|
||||
if (!taskId) {
|
||||
createMessage.error('任务数据异常');
|
||||
return;
|
||||
}
|
||||
editLoading.value = true;
|
||||
try {
|
||||
const res = await updateTitleAndDeadline({ taskId, title: editForm.title, requireFinishDate: editForm.requireFinishDate });
|
||||
if (res?.success) {
|
||||
createMessage.success(res.message || '修改成功');
|
||||
editModalVisible.value = false;
|
||||
await reload();
|
||||
} else {
|
||||
createMessage.error(res?.message || '修改失败');
|
||||
}
|
||||
} catch (error) {
|
||||
createMessage.error('修改失败');
|
||||
} finally {
|
||||
editLoading.value = false;
|
||||
}
|
||||
}
|
||||
|
||||
function handleEditCancel() {
|
||||
editModalVisible.value = false;
|
||||
editLoading.value = false;
|
||||
}
|
||||
|
||||
async function handleDeleteProcess(record) {
|
||||
const processInstId = record?.processInstId;
|
||||
const taskId = record?.id;
|
||||
|
||||
if (!processInstId) {
|
||||
createMessage.error('流程未发起,请等待流程自动发起');
|
||||
if (!taskId) {
|
||||
createMessage.error('任务数据异常,无法删除');
|
||||
return;
|
||||
}
|
||||
try {
|
||||
const res = await deletePendingTask({ taskId });
|
||||
if (res?.success) {
|
||||
createMessage.success(res.message || '删除成功');
|
||||
await reload();
|
||||
} else {
|
||||
createMessage.error(res?.message || '删除失败');
|
||||
}
|
||||
} catch (error) {
|
||||
createMessage.error('删除失败');
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -171,6 +269,10 @@
|
||||
label: '审批历史',
|
||||
onClick: handlePreviewApprovalHistory.bind(null, record),
|
||||
},
|
||||
{
|
||||
label: '修改信息',
|
||||
onClick: handleEditProcess.bind(null, record),
|
||||
},
|
||||
{
|
||||
label: '删除流程',
|
||||
popConfirm: {
|
||||
@@ -239,3 +341,13 @@
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<style lang="less">
|
||||
.edit-process-modal {
|
||||
.ant-modal-body {
|
||||
height: auto !important;
|
||||
min-height: 160px;
|
||||
overflow: visible !important;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -77,8 +77,7 @@
|
||||
<a-form-item label="重复开始日期">
|
||||
<a-date-picker
|
||||
v-model:value="formData.intervalStartTime"
|
||||
show-time
|
||||
valueFormat="YYYY-MM-DD HH:mm:ss"
|
||||
valueFormat="YYYY-MM-DD"
|
||||
placeholder="重复开始日期"
|
||||
style="width: 100%"
|
||||
:getPopupContainer="(node) => node?.parentNode"
|
||||
@@ -279,7 +278,7 @@ import { PARTY_COMMITTEE_DEPT_ID, SDW_LEADER_ROLE_ID } from '/@/constant/supervi
|
||||
triggerType: formData.triggerMode === 'recurring' ? 2 : 1,
|
||||
intervalType: formData.triggerMode === 'recurring' ? Number(formData.intervalType) : undefined,
|
||||
startCount: formData.triggerMode === 'recurring' ? Number(formData.startCount) : undefined,
|
||||
intervalStartTime: formData.triggerMode === 'recurring' ? formData.intervalStartTime : undefined,
|
||||
intervalStartTime: formData.triggerMode === 'recurring' && formData.intervalStartTime ? formData.intervalStartTime + ' 02:00:00' : undefined,
|
||||
deptId: formData.deptIds.join(','),
|
||||
deptIds: [...formData.deptIds],
|
||||
isNeedAppro: showSuoleaderFields.value ? formData.isNeedAppro : undefined,
|
||||
|
||||
@@ -76,8 +76,7 @@
|
||||
<a-form-item label="重复开始日期">
|
||||
<a-date-picker
|
||||
v-model:value="formData.intervalStartTime"
|
||||
show-time
|
||||
valueFormat="YYYY-MM-DD HH:mm:ss"
|
||||
valueFormat="YYYY-MM-DD"
|
||||
placeholder="重复开始日期"
|
||||
style="width: 100%"
|
||||
:getPopupContainer="(node) => node?.parentNode"
|
||||
@@ -251,7 +250,7 @@ import { SUOBAN_DEPT_ID, MEASURE_RES_LEADER_ROLE_ID } from '/@/constant/supervis
|
||||
triggerType: formData.triggerMode === 'recurring' ? 2 : 1,
|
||||
intervalType: formData.triggerMode === 'recurring' ? Number(formData.intervalType) : undefined,
|
||||
startCount: formData.triggerMode === 'recurring' ? Number(formData.startCount) : undefined,
|
||||
intervalStartTime: formData.triggerMode === 'recurring' ? formData.intervalStartTime : undefined,
|
||||
intervalStartTime: formData.triggerMode === 'recurring' && formData.intervalStartTime ? formData.intervalStartTime + ' 02:00:00' : undefined,
|
||||
title: taskTitle,
|
||||
deptId: formData.deptIds.join(','),
|
||||
deptIds: [...formData.deptIds],
|
||||
|
||||
Reference in New Issue
Block a user