!74 fix(bpm): 修复选人组件 Name 翻译使用错误字段及查询顺序问题
* fix(bpm): 修复选人组件 Name 翻译使用错误字段及查询顺序问题 * feat(bpm): 默认审批意见改为完全由后端节点配置驱动,移除所有写死模板 * fix(bpm): 修复节点默认审批意见配置 UI 绑定错误,支持 extraVars 变量解析 * feat(bpm): 新增条件变量默认审批意见,支持按流程变量值动态预填审批意见
This commit is contained in:
@@ -72,17 +72,17 @@
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item label="措施责任领导" name="measureResLeader">
|
||||
<j-select-user v-model:value="mainForm.measureResLeader" :disabled="mainDisabled" allow-clear />
|
||||
<j-select-user v-model:value="mainForm.measureResLeader" :disabled="mainDisabled" allow-clear @select="selectHandler('measureResLeader')" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item label="措施责任部门" name="measureResDept">
|
||||
<j-select-dept v-model:value="mainForm.measureResDept" :disabled="mainDisabled" :multiple="true" checkStrictly allow-clear />
|
||||
<j-select-dept v-model:value="mainForm.measureResDept" :disabled="mainDisabled" :multiple="true" checkStrictly allow-clear @select="selectHandler('measureResDept')" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item label="分管所领导" name="chargeLeaderId">
|
||||
<j-select-user v-model:value="mainForm.chargeLeaderId" :disabled="mainDisabled" allow-clear />
|
||||
<j-select-user v-model:value="mainForm.chargeLeaderId" :disabled="mainDisabled" allow-clear @select="selectHandler('chargeLeaderId')" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
@@ -102,7 +102,7 @@
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item label="党群领导" name="supDeptleaderid">
|
||||
<j-select-user v-model:value="mainForm.supDeptleaderid" :disabled="mainDisabled" allow-clear />
|
||||
<j-select-user v-model:value="mainForm.supDeptleaderid" :disabled="mainDisabled" allow-clear @select="selectHandler('supDeptleaderid')" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
@@ -194,34 +194,33 @@
|
||||
</a-col>
|
||||
<a-col v-if="showSubApproveUserSelector" :span="12">
|
||||
<a-form-item label="部门经办人" :labelCol="wideLabelCol" :wrapperCol="wideWrapperCol">
|
||||
<sz-dept-user-modal v-model:value="subApproveUser" :disabled="savingSubApproveUser" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
<a-form v-if="showIsNeedLeaderApprove" class="process-variable-form" labelAlign="left" :labelCol="labelCol" :wrapperCol="wrapperCol">
|
||||
<a-row :gutter="16">
|
||||
<a-col :span="12">
|
||||
<a-form-item label="是否需要所领导审批" :labelCol="wideLabelCol" :wrapperCol="wideWrapperCol">
|
||||
<a-radio-group v-model:value="isNeedLeaderApprove" :disabled="savingIsNeedLeaderApprove">
|
||||
<a-radio :value="0">否(不需要)</a-radio>
|
||||
<a-radio :value="1">是(需要所领导审批)</a-radio>
|
||||
</a-radio-group>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col v-if="showIsNeedLeaderApproveSelector" :span="12">
|
||||
<a-form-item label="分管所领导" :labelCol="wideLabelCol" :wrapperCol="wideWrapperCol">
|
||||
<j-select-user v-model:value="leaderApproveUser" :disabled="savingIsNeedLeaderApprove" allow-clear />
|
||||
<sz-dept-user-modal v-model:value="subApproveUser" :disabled="savingSubApproveUser" @confirm="onSubApproveUserConfirm" />
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form>
|
||||
<!-- <a-form v-if="showIsNeedLeaderApprove" class="process-variable-form" labelAlign="left" :labelCol="labelCol" :wrapperCol="wrapperCol">-->
|
||||
<!-- <a-row :gutter="16">-->
|
||||
<!-- <a-col :span="12">-->
|
||||
<!-- <a-form-item label="是否需要所领导审批" :labelCol="wideLabelCol" :wrapperCol="wideWrapperCol">-->
|
||||
<!-- <a-radio-group v-model:value="isNeedLeaderApprove" :disabled="savingIsNeedLeaderApprove">-->
|
||||
<!-- <a-radio :value="0">否(不需要)</a-radio>-->
|
||||
<!-- <a-radio :value="1">是(需要所领导审批)</a-radio>-->
|
||||
<!-- </a-radio-group>-->
|
||||
<!-- </a-form-item>-->
|
||||
<!-- </a-col>-->
|
||||
<!-- <a-col v-if="showIsNeedLeaderApproveSelector" :span="12">-->
|
||||
<!-- <a-form-item label="分管所领导" :labelCol="wideLabelCol" :wrapperCol="wideWrapperCol">-->
|
||||
<!-- <j-select-user v-model:value="leaderApproveUser" :disabled="savingIsNeedLeaderApprove" allow-clear @select="selectHandler('leaderApproveUser')" />-->
|
||||
<!-- </a-form-item>-->
|
||||
<!-- </a-col>-->
|
||||
<!-- </a-row>-->
|
||||
<!-- </a-form>-->
|
||||
<TaskHandleInnerContent
|
||||
:form-data="formData"
|
||||
:claim="claim"
|
||||
:showSelnextUser="showSelnextUser"
|
||||
:beforeHandle="saveMainFormBeforeProcessHandle"
|
||||
:defaultReason="defaultHandleReason"
|
||||
:defaultCc="defaultCcUsers"
|
||||
@success="handleProcessSuccess"
|
||||
@claimSuccess="handleClaimSuccess"
|
||||
@@ -232,7 +231,7 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { computed, onMounted, reactive, ref, watch } from 'vue';
|
||||
import { computed, onMounted, reactive, ref, watch, provide } from 'vue';
|
||||
import { defHttp } from '/@/utils/http/axios';
|
||||
import { useMessage } from '/@/hooks/web/useMessage';
|
||||
import { useUserStore } from '/@/store/modules/user';
|
||||
@@ -245,23 +244,7 @@ import SzDeptUserModal from '/@/components/semri/deptUserComponent/SzDeptUserMod
|
||||
import { list as progressList, deleteOne as progressDelete } from '../../inspectProgress/DqInspectProgress.api';
|
||||
import { usePermission } from '/@/hooks/web/usePermission';
|
||||
import { PARTY_COMMITTEE_DEPT_ID, SDW_LEADER_ROLE_ID } from '/@/constant/supervision';
|
||||
import {
|
||||
buildApproveReason,
|
||||
buildDeptHandlerFeedbackReason,
|
||||
buildCollectDoneReason,
|
||||
buildSecretaryApprovedReason,
|
||||
buildDisciplineSecretaryApprovedReason,
|
||||
buildDeptLeaderApprovedReason,
|
||||
buildChargeDeptApprovedReason,
|
||||
buildChargeLeaderApprovedReason,
|
||||
buildAlreadyApprovedReason,
|
||||
buildAlreadyReviewedReason,
|
||||
buildPleaseDeptHandleReason,
|
||||
buildLaunchSupervisionReason,
|
||||
buildPartyMassesConfirmedReason,
|
||||
buildAssignProcessReason,
|
||||
buildJiJianCheckedReason,
|
||||
} from '/@/composables/useDefaultApprovalReason';
|
||||
import { useSelectNameResolver } from '/@/composables/useSelectNameResolver';
|
||||
import TaskHandleInnerContent from '/@/views/super/bpm/process/personalOffice/myHandleTask/content/TaskHandleInnerContent.vue';
|
||||
import DqInspectTaskBPMFeedbackModal from './DqInspectTaskBPMFeedbackModal.vue';
|
||||
import SUploadFile from '/@/components/semri/fileComponent/SUploadFile.vue';
|
||||
@@ -297,6 +280,7 @@ import {
|
||||
const showFeedbackDetail = ref(true);
|
||||
const feedbackList = ref<any[]>([]);
|
||||
const subApproveUser = ref('');
|
||||
const subApproveUserNames = ref('');
|
||||
const isEnd = ref(0);
|
||||
const problemTreeData = ref<any[]>([]);
|
||||
const loadingProblemOptions = ref(false);
|
||||
@@ -305,32 +289,6 @@ import {
|
||||
const savingIsNeedLeaderApprove = ref(false);
|
||||
const defaultCcUsers = ref<Array<{ username: string; realname: string }>>([]);
|
||||
|
||||
const handleReasonTemplateMap: Record<string, () => string> = {
|
||||
Task_0g8sc6n: buildApproveReason,
|
||||
Task_0ixi1rs: buildCollectDoneReason,
|
||||
Task_0l5ik22: buildApproveReason,
|
||||
Task_0mbr735: buildDeptHandlerFeedbackReason,
|
||||
Task_0mxtg05: buildAlreadyApprovedReason,
|
||||
Task_14226iy: buildAlreadyReviewedReason,
|
||||
Task_1c64uvl: buildPleaseDeptHandleReason,
|
||||
Task_1i99s6v: buildApproveReason,
|
||||
Task_1nj4k7b: buildLaunchSupervisionReason,
|
||||
|
||||
Task_09qxoto: buildDisciplineSecretaryApprovedReason,
|
||||
Task_0cfjknn: buildSecretaryApprovedReason,
|
||||
Task_0r2vutj: buildChargeDeptApprovedReason,
|
||||
Task_1azpeqj: buildJiJianCheckedReason,
|
||||
Task_1cvft2f: buildPartyMassesConfirmedReason,
|
||||
Task_1k1zt37: buildChargeLeaderApprovedReason,
|
||||
Task_1k36lmv: buildDeptLeaderApprovedReason,
|
||||
Task_1k6n75g: buildAssignProcessReason,
|
||||
};
|
||||
|
||||
const defaultHandleReason = computed(() => {
|
||||
const builder = handleReasonTemplateMap[String(processInfo.value.taskDefKey || '')];
|
||||
return builder ? builder() : '';
|
||||
});
|
||||
|
||||
const mainForm = reactive<Record<string, any>>({
|
||||
id: '',
|
||||
problemId: '',
|
||||
@@ -339,12 +297,16 @@ import {
|
||||
deadline: '',
|
||||
targetNode: '',
|
||||
measureResLeader: '',
|
||||
measureResLeaderNames: '',
|
||||
measureResDept: '',
|
||||
measureResDeptNames: '',
|
||||
chargeLeaderId: '',
|
||||
chargeLeaderIdNames: '',
|
||||
rectificationEvidence: '',
|
||||
evaluationCriterion: '',
|
||||
isNeedAppro: '',
|
||||
supDeptleaderid: '',
|
||||
supDeptleaderidNames: '',
|
||||
inspectionStatus: '',
|
||||
supervisoryOpinion: '',
|
||||
measureCount: undefined,
|
||||
@@ -353,8 +315,28 @@ import {
|
||||
taskStatus: '',
|
||||
superviseCount: '',
|
||||
sortNo: undefined,
|
||||
leaderApproveUserNames: '',
|
||||
});
|
||||
|
||||
// 选人/选部门 ID→Name 翻译
|
||||
const { resolveAll, selectHandler } = useSelectNameResolver(mainForm, [
|
||||
{ field: 'measureResDept', type: 'dept' },
|
||||
{ field: 'measureResLeader', type: 'user' },
|
||||
{ field: 'chargeLeaderId', type: 'user' },
|
||||
{ field: 'supDeptleaderid', type: 'user' },
|
||||
{ field: 'leaderApproveUser', type: 'user', getValue: () => leaderApproveUser.value },
|
||||
]);
|
||||
|
||||
// 合并 mainForm + 表单局部变量,供占位符 ${变量名} 解析
|
||||
const formScope = computed(() => ({
|
||||
...mainForm,
|
||||
isEnd: isEnd.value,
|
||||
subApproveUser: subApproveUser.value,
|
||||
subApproveUserNames: subApproveUserNames.value,
|
||||
isNeedLeaderApprove: isNeedLeaderApprove.value,
|
||||
leaderApproveUser: leaderApproveUser.value,
|
||||
}));
|
||||
|
||||
const feedbackColumns = computed(() => {
|
||||
const cols: any[] = [
|
||||
{ title: '序号', key: 'seq', align: 'center', width: 60 },
|
||||
@@ -426,6 +408,9 @@ import {
|
||||
processTableName: props.formData?.processTableName,
|
||||
}));
|
||||
|
||||
provide('extraVars', formScope);
|
||||
provide('flowVars', computed(() => props.formData?.vars || {}));
|
||||
|
||||
onMounted(() => {
|
||||
initFormData();
|
||||
});
|
||||
@@ -443,6 +428,14 @@ import {
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
// 反向同步:本地切换 isEnd 时更新 formData.vars,使 conditionalDefaultOpinion 响应
|
||||
watch(isEnd, (val) => {
|
||||
const vars = props.formData?.vars;
|
||||
if (vars) {
|
||||
vars.is_end = String(val);
|
||||
vars.isEnd = String(val);
|
||||
}
|
||||
});
|
||||
|
||||
watch(
|
||||
() => props.formData?.vars?.isNeedLeaderApprove,
|
||||
@@ -451,6 +444,14 @@ import {
|
||||
},
|
||||
{ immediate: true }
|
||||
);
|
||||
// 反向同步:本地切换 isNeedLeaderApprove 时更新 formData.vars
|
||||
watch(isNeedLeaderApprove, (val) => {
|
||||
const vars = props.formData?.vars;
|
||||
if (vars) {
|
||||
vars.is_need_leader_approve = String(val);
|
||||
vars.isNeedLeaderApprove = String(val);
|
||||
}
|
||||
});
|
||||
|
||||
async function fetchDefaultCcUsers() {
|
||||
try {
|
||||
@@ -503,6 +504,7 @@ import {
|
||||
const data = await defHttp.get({ url: queryByIdUrl, params: { id: dataId } });
|
||||
setMainForm(data || {});
|
||||
leaderApproveUser.value = mainForm.chargeLeaderId || '';
|
||||
await resolveAll();
|
||||
await loadFeedbackList();
|
||||
} finally {
|
||||
loading.value = false;
|
||||
@@ -614,6 +616,10 @@ import {
|
||||
await progressDelete({ id: record.id }, loadFeedbackList);
|
||||
}
|
||||
|
||||
function onSubApproveUserConfirm(userIds: string, realnames: string) {
|
||||
subApproveUserNames.value = realnames || '';
|
||||
}
|
||||
|
||||
async function saveSubApproveUserVariable(options: { showSuccessMessage?: boolean } = {}) {
|
||||
const { showSuccessMessage = true } = options;
|
||||
const processInstanceId = processInfo.value.processInstanceId;
|
||||
|
||||
Reference in New Issue
Block a user