!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',
|
startProcessSchedules = '/tasktask/taskTask/flow-schedules',
|
||||||
queryByBusinessId = '/tasktask/taskTask/queryByBusinessId',
|
queryByBusinessId = '/tasktask/taskTask/queryByBusinessId',
|
||||||
deleteSingleProcess = '/tasktask/taskTask/deleteSingleProcess',
|
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 });
|
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>
|
</BasicTable>
|
||||||
</div>
|
</div>
|
||||||
<BpmPictureModal @register="registerBpmModal" />
|
<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
|
<j-modal
|
||||||
title="审批历史"
|
title="审批历史"
|
||||||
:width="approvalHistoryModalWidth"
|
:width="approvalHistoryModalWidth"
|
||||||
@@ -22,12 +49,12 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script lang="ts" setup>
|
<script lang="ts" setup>
|
||||||
import { nextTick, ref } from 'vue';
|
import { nextTick, reactive, ref } from 'vue';
|
||||||
import { BasicColumn, BasicTable, TableAction, useTable } from '/@/components/Table';
|
import { BasicColumn, BasicTable, TableAction, useTable } from '/@/components/Table';
|
||||||
import JModal from '/@/components/Modal/src/JModal/JModal.vue';
|
import JModal from '/@/components/Modal/src/JModal/JModal.vue';
|
||||||
import { useModal } from '/@/components/Modal';
|
import { useModal } from '/@/components/Modal';
|
||||||
import { columns } from './QueryProcessList.data';
|
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 { useMessage } from '/@/hooks/web/useMessage';
|
||||||
import TaskApprovalHistoryContent from '/@/views/super/bpm/process/personalOffice/myHandleTask/content/TaskApprovalHistoryContent.vue';
|
import TaskApprovalHistoryContent from '/@/views/super/bpm/process/personalOffice/myHandleTask/content/TaskApprovalHistoryContent.vue';
|
||||||
|
|
||||||
@@ -51,6 +78,13 @@
|
|||||||
const approvalHistoryVisible = ref(false);
|
const approvalHistoryVisible = ref(false);
|
||||||
const approvalHistoryFormData = ref<Recordable>({});
|
const approvalHistoryFormData = ref<Recordable>({});
|
||||||
const approvalHistoryRef = ref();
|
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 [registerBpmModal, { openModal: bpmPicModal }] = useModal();
|
||||||
|
|
||||||
const [registerTable, { setColumns, setTableData, reload, clearSelectedRowKeys }] = useTable({
|
const [registerTable, { setColumns, setTableData, reload, clearSelectedRowKeys }] = useTable({
|
||||||
@@ -76,12 +110,12 @@
|
|||||||
actionColumn: {
|
actionColumn: {
|
||||||
title: '操作',
|
title: '操作',
|
||||||
dataIndex: 'action',
|
dataIndex: 'action',
|
||||||
width: 240,
|
width: 320,
|
||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
slots: { customRender: 'action' },
|
slots: { customRender: 'action' },
|
||||||
},
|
},
|
||||||
scroll: {
|
scroll: {
|
||||||
x: tableScrollX,
|
x: tableScrollX + 80,
|
||||||
y: tableBodyHeight,
|
y: tableBodyHeight,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
@@ -110,6 +144,7 @@
|
|||||||
setColumns(defaultColumns);
|
setColumns(defaultColumns);
|
||||||
setTableData([]);
|
setTableData([]);
|
||||||
handleApprovalHistoryCancel();
|
handleApprovalHistoryCancel();
|
||||||
|
handleEditCancel();
|
||||||
clearSelectedRowKeys();
|
clearSelectedRowKeys();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -141,10 +176,73 @@
|
|||||||
approvalHistoryFormData.value = {};
|
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) {
|
async function handleDeleteProcess(record) {
|
||||||
const processInstId = record?.processInstId;
|
const processInstId = record?.processInstId;
|
||||||
|
const taskId = record?.id;
|
||||||
|
|
||||||
if (!processInstId) {
|
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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -171,6 +269,10 @@
|
|||||||
label: '审批历史',
|
label: '审批历史',
|
||||||
onClick: handlePreviewApprovalHistory.bind(null, record),
|
onClick: handlePreviewApprovalHistory.bind(null, record),
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
label: '修改信息',
|
||||||
|
onClick: handleEditProcess.bind(null, record),
|
||||||
|
},
|
||||||
{
|
{
|
||||||
label: '删除流程',
|
label: '删除流程',
|
||||||
popConfirm: {
|
popConfirm: {
|
||||||
@@ -239,3 +341,13 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
</style>
|
</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-form-item label="重复开始日期">
|
||||||
<a-date-picker
|
<a-date-picker
|
||||||
v-model:value="formData.intervalStartTime"
|
v-model:value="formData.intervalStartTime"
|
||||||
show-time
|
valueFormat="YYYY-MM-DD"
|
||||||
valueFormat="YYYY-MM-DD HH:mm:ss"
|
|
||||||
placeholder="重复开始日期"
|
placeholder="重复开始日期"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:getPopupContainer="(node) => node?.parentNode"
|
: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,
|
triggerType: formData.triggerMode === 'recurring' ? 2 : 1,
|
||||||
intervalType: formData.triggerMode === 'recurring' ? Number(formData.intervalType) : undefined,
|
intervalType: formData.triggerMode === 'recurring' ? Number(formData.intervalType) : undefined,
|
||||||
startCount: formData.triggerMode === 'recurring' ? Number(formData.startCount) : 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(','),
|
deptId: formData.deptIds.join(','),
|
||||||
deptIds: [...formData.deptIds],
|
deptIds: [...formData.deptIds],
|
||||||
isNeedAppro: showSuoleaderFields.value ? formData.isNeedAppro : undefined,
|
isNeedAppro: showSuoleaderFields.value ? formData.isNeedAppro : undefined,
|
||||||
|
|||||||
@@ -76,8 +76,7 @@
|
|||||||
<a-form-item label="重复开始日期">
|
<a-form-item label="重复开始日期">
|
||||||
<a-date-picker
|
<a-date-picker
|
||||||
v-model:value="formData.intervalStartTime"
|
v-model:value="formData.intervalStartTime"
|
||||||
show-time
|
valueFormat="YYYY-MM-DD"
|
||||||
valueFormat="YYYY-MM-DD HH:mm:ss"
|
|
||||||
placeholder="重复开始日期"
|
placeholder="重复开始日期"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:getPopupContainer="(node) => node?.parentNode"
|
: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,
|
triggerType: formData.triggerMode === 'recurring' ? 2 : 1,
|
||||||
intervalType: formData.triggerMode === 'recurring' ? Number(formData.intervalType) : undefined,
|
intervalType: formData.triggerMode === 'recurring' ? Number(formData.intervalType) : undefined,
|
||||||
startCount: formData.triggerMode === 'recurring' ? Number(formData.startCount) : 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,
|
title: taskTitle,
|
||||||
deptId: formData.deptIds.join(','),
|
deptId: formData.deptIds.join(','),
|
||||||
deptIds: [...formData.deptIds],
|
deptIds: [...formData.deptIds],
|
||||||
|
|||||||
Reference in New Issue
Block a user