gaoluyang
2 天以前 e60fdd9bd9e1ffe8e8311f67604f92e109707db2
fix(hrm): 调岗提交前选择审批流程并传 processDefinitionKey

提交接口 /hrm/transfer/submit 要求 processDefinitionKey,前端只传 id,
导致提交必报「请求参数缺失:processDefinitionKey」。与请假/加班/离职保持一致:
先拉取可用流程定义,弹窗选择后再提交。

Co-Authored-By: Claude Code <noreply@anthropic.com>
已修改2个文件
66 ■■■■■ 文件已修改
src/api/hrm/transfer/index.ts 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/hrm/transfer/index.vue 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/api/hrm/transfer/index.ts
@@ -27,6 +27,12 @@
    remark?: string;
    createTime?: string;
  }
  /** 审批流程 */
  export interface ApproveProcess {
    key: string;
    name: string;
  }
}
/** 查询调岗申请分页列表 */
@@ -58,8 +64,10 @@
}
/** 提交调岗申请(发起审批) */
export function submitTransfer(id: number) {
  return requestClient.post(`/hrm/transfer/submit?id=${id}`);
export function submitTransfer(id: number, processDefinitionKey: string) {
  return requestClient.post('/hrm/transfer/submit', null, {
    params: { id, processDefinitionKey },
  });
}
/** 撤销调岗申请 */
@@ -69,5 +77,7 @@
/** 获取可用流程定义列表 */
export function getTransferApproveProcessDefinitionList() {
  return requestClient.get<any[]>('/hrm/transfer/approve-process-definition-list');
  return requestClient.get<HrmTransferApi.ApproveProcess[]>(
    '/hrm/transfer/approve-process-definition-list',
  );
}
src/views/hrm/transfer/index.vue
@@ -2,14 +2,17 @@
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
import type { HrmTransferApi } from '#/api/hrm/transfer';
import { ref } from 'vue';
import { Page, useVbenModal } from '#/packages/effects/common-ui/src';
import { message } from 'ant-design-vue';
import { message, Modal, Select } from 'ant-design-vue';
import { ACTION_ICON, TableAction, useVbenVxeGrid } from '#/adapter/vxe-table';
import {
  cancelTransfer,
  deleteTransfer,
  getTransferApproveProcessDefinitionList,
  getTransferPage,
  submitTransfer,
} from '#/api/hrm/transfer';
@@ -58,11 +61,34 @@
  }
}
/** 提交调岗申请 */
const submitModalVisible = ref(false);
const currentRow = ref<HrmTransferApi.Transfer>();
const processList = ref<HrmTransferApi.ApproveProcess[]>([]);
const selectedProcessKey = ref<string>();
const submitLoading = ref(false);
/** 提交调岗申请(先选择审批流程) */
async function handleSubmit(row: HrmTransferApi.Transfer) {
  await submitTransfer(row.id!);
  message.success('提交成功');
  handleRefresh();
  processList.value = await getTransferApproveProcessDefinitionList();
  currentRow.value = row;
  selectedProcessKey.value = undefined;
  submitModalVisible.value = true;
}
async function confirmSubmit() {
  if (!selectedProcessKey.value) {
    message.warning('请选择调岗审批流程');
    return;
  }
  submitLoading.value = true;
  try {
    await submitTransfer(currentRow.value!.id!, selectedProcessKey.value);
    message.success('提交成功');
    submitModalVisible.value = false;
    handleRefresh();
  } finally {
    submitLoading.value = false;
  }
}
/** 撤销调岗申请 */
@@ -165,5 +191,19 @@
        />
      </template>
    </Grid>
    <Modal
      v-model:open="submitModalVisible"
      title="提交至协同办公"
      width="420px"
      :confirm-loading="submitLoading"
      @ok="confirmSubmit"
    >
      <Select
        v-model:value="selectedProcessKey"
        class="w-full"
        placeholder="请选择调岗审批流程"
        :options="processList.map((item) => ({ label: item.name, value: item.key }))"
      />
    </Modal>
  </Page>
</template>