yxk-20260430-党委会流程办理页面改造,将流程审批相关页面集成到表单下方一起办理

This commit is contained in:
ye1023
2026-04-30 11:15:04 +08:00
parent 8238acce55
commit cff7086134
5 changed files with 75 additions and 15 deletions
@@ -13,6 +13,7 @@ enum Api {
importExcel = '/bgpartymatter/bgPartymatter/importExcel', importExcel = '/bgpartymatter/bgPartymatter/importExcel',
exportXls = '/bgpartymatter/bgPartymatter/exportXls', exportXls = '/bgpartymatter/bgPartymatter/exportXls',
saveBpmForm = '/bgpartymatter/bgPartymatter/saveBpmForm', saveBpmForm = '/bgpartymatter/bgPartymatter/saveBpmForm',
setProcessVariable = '/act/process/setProcessVariable',
bgPartymatterFeedbackList = '/bgpartymatter/bgPartymatter/listBgPartymatterFeedbackByMainId', bgPartymatterFeedbackList = '/bgpartymatter/bgPartymatter/listBgPartymatterFeedbackByMainId',
bgPartymatterFeedbackSave= '/bgpartymatter/bgPartymatter/addBgPartymatterFeedback', bgPartymatterFeedbackSave= '/bgpartymatter/bgPartymatter/addBgPartymatterFeedback',
bgPartymatterFeedbackEdit= '/bgpartymatter/bgPartymatter/editBgPartymatterFeedback', bgPartymatterFeedbackEdit= '/bgpartymatter/bgPartymatter/editBgPartymatterFeedback',
@@ -78,6 +79,10 @@ export const saveBpmForm = (params) => {
return defHttp.post({ url: Api.saveBpmForm, params }, { isTransformResponse: false }); return defHttp.post({ url: Api.saveBpmForm, params }, { isTransformResponse: false });
} }
export const setProcessVariable = (params) => {
return defHttp.post({ url: Api.setProcessVariable, params }, { isTransformResponse: false });
}
/** /**
* 列表接口 * 列表接口
* @param params * @param params
@@ -144,6 +144,17 @@
<a-button type="primary" :loading="savingFeedback" @click="saveFeedback">保存反馈</a-button> <a-button type="primary" :loading="savingFeedback" @click="saveFeedback">保存反馈</a-button>
</div> </div>
</a-form> </a-form>
<template v-if="showProcessHandle">
<a-divider />
<div class="section-title">流程办理</div>
<TaskHandleInnerContent
:form-data="formData"
:claim="claim"
@success="handleProcessSuccess"
@claimSuccess="handleClaimSuccess"
/>
</template>
</div> </div>
</a-spin> </a-spin>
</template> </template>
@@ -155,18 +166,20 @@
import JSelectDept from '/@/components/Form/src/jeecg/components/JSelectDept.vue'; import JSelectDept from '/@/components/Form/src/jeecg/components/JSelectDept.vue';
import { bgPartymatterFeedbackList, bgPartymatterFeedbackSaveOrUpdate, saveBpmForm } from '../BgPartymatter.api'; import { bgPartymatterFeedbackList, bgPartymatterFeedbackSaveOrUpdate, saveBpmForm } from '../BgPartymatter.api';
import { usePermission } from '/@/hooks/web/usePermission'; import { usePermission } from '/@/hooks/web/usePermission';
import TaskHandleInnerContent from '/@/views/super/bpm/process/personalOffice/myHandleTask/content/TaskHandleInnerContent.vue';
const { isDisabledAuth, hasPermission, initBpmFormData} = usePermission(); const { isDisabledAuth, hasPermission, initBpmFormData} = usePermission();
const props = defineProps({ const props = defineProps({
formDisabled: { type: Boolean, default: false }, formDisabled: { type: Boolean, default: false },
formData: { type: Object, default: () => ({}) }, formData: { type: Object, default: () => ({}) },
formBpm: { type: Boolean, default: true }, formBpm: { type: Boolean, default: true },
claim: { type: Boolean, default: false },
}); });
initBpmFormData(props.formData); initBpmFormData(props.formData);
const emit = defineEmits(['ok']); const emit = defineEmits(['ok', 'success', 'claimSuccess']);
const { createMessage } = useMessage(); const { createMessage } = useMessage();
const queryByIdUrl = '/bgpartymatter/bgPartymatter/queryById'; const queryByIdUrl = '/bgpartymatter/bgPartymatter/queryById';
@@ -238,6 +251,8 @@
return props.formDisabled; return props.formDisabled;
}); });
const showProcessHandle = computed(() => props.formBpm && !!props.formData?.taskId);
const processInfo = computed(() => ({ const processInfo = computed(() => ({
taskId: props.formData?.taskId, taskId: props.formData?.taskId,
taskDefKey: props.formData?.taskDefKey, taskDefKey: props.formData?.taskDefKey,
@@ -341,6 +356,14 @@
} }
} }
function handleProcessSuccess() {
emit('success');
}
function handleClaimSuccess() {
emit('claimSuccess');
}
defineExpose({ defineExpose({
submitForm, submitForm,
initFormData, initFormData,
@@ -15,7 +15,15 @@
<div v-else class="component_div"> <div v-else class="component_div">
<Suspense v-if="path"> <Suspense v-if="path">
<template #default> <template #default>
<component v-if="path" :is="currentComponent" :formData="formData" form-bpm></component> <component
v-if="path"
:is="currentComponent"
:formData="formData"
:claim="claim"
form-bpm
@success="handleSuccess"
@claimSuccess="handleClaimSuccess"
></component>
</template> </template>
<template #fallback> <template #fallback>
<div style="width: 100%; text-align: center; padding-top: 60px"> <div style="width: 100%; text-align: center; padding-top: 60px">
@@ -51,8 +59,13 @@
}, },
// 父级html // 父级html
parentNode: { type: Object as PropType<HTMLElement> }, parentNode: { type: Object as PropType<HTMLElement> },
claim: {
type: Boolean,
default: false,
}, },
setup(props) { },
emits: ['success', 'claimSuccess'],
setup(props, { emit }) {
const height = window.innerHeight - 120 + 'px'; const height = window.innerHeight - 120 + 'px';
/** /**
@@ -136,11 +149,21 @@
return /^http[s]?:\/\/.*/.test(s); return /^http[s]?:\/\/.*/.test(s);
} }
function handleSuccess() {
emit('success');
}
function handleClaimSuccess() {
emit('claimSuccess');
}
return { return {
height, height,
iframeUrl, iframeUrl,
currentComponent, currentComponent,
designFormInfo designFormInfo,
handleSuccess,
handleClaimSuccess
}; };
}, },
}; };
@@ -1,6 +1,6 @@
<template> <template>
<a-card style="margin-top: 10px"> <a-card style="margin-top: 10px">
<template #title> <audit-outlined /><span style="margin-left: 10px">我的审批</span> </template> <!-- <template #title> <audit-outlined /><span style="margin-left: 10px">我的审批</span> </template>-->
<a-spin :spinning="loading"> <a-spin :spinning="loading">
<a-list itemLayout="vertical"> <a-list itemLayout="vertical">
<a-list-item> <a-list-item>
@@ -20,9 +20,9 @@
</div> </div>
</a-list-item> </a-list-item>
<a-list-item> <!-- <a-list-item>-->
<j-upload text="添加文件" bizPath="bpm" :returnUrl="false" v-model:value="model.fileList"></j-upload> <!-- <j-upload text="添加文件" bizPath="bpm" :returnUrl="false" v-model:value="model.fileList"></j-upload>-->
</a-list-item> <!-- </a-list-item>-->
<!-- 选择分支 --> <!-- 选择分支 -->
<a-list-item> <a-list-item>
@@ -41,7 +41,7 @@
</span> </span>
<span v-show="model.processModel == 3" v-if="historyCount > 0"> <span v-show="model.processModel == 3" v-if="historyCount > 0">
<a-select v-model:value="model.rejectModelNode" :getPopupContainer="(target) => target?.parentNode" style="width: 150px"> <a-select v-model:value="model.rejectModelNode" :getPopupContainer="(target) => target?.parentNode" style="width: 250px">
<template v-for="(item, index) in historyList"> <template v-for="(item, index) in historyList">
<a-select-option v-if="item.NAME_ != currentTaskName" :value="item.TASK_DEF_KEY_">{{ item.NAME_ }}</a-select-option> <a-select-option v-if="item.NAME_ != currentTaskName" :value="item.TASK_DEF_KEY_">{{ item.NAME_ }}</a-select-option>
</template> </template>
@@ -14,13 +14,20 @@
<a-tabs v-model="activeKey" tabPosition="left"> <a-tabs v-model="activeKey" tabPosition="left">
<a-tab-pane key="1"> <a-tab-pane key="1">
<template #tab> <file-text-outlined /><span>附加单据</span> </template> <template #tab> <file-text-outlined /><span>附加单据</span> </template>
<BpmDynamicForm :path="taskFormUrl" :form-data="taskFormData" :parentNode="parentNode"/> <BpmDynamicForm
:path="taskFormUrl"
:form-data="taskFormData"
:claim="claimStatus"
:parentNode="parentNode"
@success="handleSuccess"
@claimSuccess="claimSuccess"
/>
</a-tab-pane> </a-tab-pane>
<a-tab-pane key="2"> <!-- <a-tab-pane v-if="!isEmbeddedHandleForm" key="2">-->
<template #tab> <user-outlined /><span>任务处理</span> </template> <!-- <template #tab> <user-outlined /><span>任务处理</span> </template>-->
<task-handle-inner-content @success="handleSuccess" :form-data="taskFormData" :claim="claimStatus" @claimSuccess="claimSuccess"></task-handle-inner-content> <!-- <task-handle-inner-content @success="handleSuccess" :form-data="taskFormData" :claim="claimStatus" @claimSuccess="claimSuccess"></task-handle-inner-content>-->
</a-tab-pane> <!-- </a-tab-pane>-->
<a-tab-pane key="3"> <a-tab-pane key="3">
<template #tab> <partition-outlined /><span>流程图</span> </template> <template #tab> <partition-outlined /><span>流程图</span> </template>
@@ -73,6 +80,7 @@
}); });
const activeKey = ref('1'); const activeKey = ref('1');
const isEmbeddedHandleForm = computed(() => taskFormUrl.value?.includes('BgPartymatterBPMForm'));
// desformView 父级滚动条,只有传了此参数才会突破内部弹窗 // desformView 父级滚动条,只有传了此参数才会突破内部弹窗
const modalRef = ref(); const modalRef = ref();
@@ -100,7 +108,8 @@
claimStatus, claimStatus,
claimSuccess, claimSuccess,
modalRef, modalRef,
parentNode parentNode,
isEmbeddedHandleForm
}; };
}, },
}; };