发起变更提交-等级判定表分数保存问题修改
This commit is contained in:
@@ -10,31 +10,25 @@ export const useChangeStore = defineStore(SetupStoreId.Change, () => {
|
||||
// 获取审批链信息
|
||||
const getFlowInfo = computed(() => flowInfo.value);
|
||||
|
||||
// 更新选中模板信息
|
||||
// 设置选中模板信息
|
||||
function setStepsInfo(data: Api.Change.StepInfo[]) {
|
||||
stepsInfo.value = data;
|
||||
setFlowInfo(data);
|
||||
}
|
||||
|
||||
function getSelectedMembers(steps: Api.Change.StepInfo[]) {
|
||||
return steps.map(step => {
|
||||
// 先找 is_sign === 1 的成员
|
||||
const signed = step.members.find((m: any) => m.is_sign === 1);
|
||||
// 若没有则取第一个,若成员列表为空则返回 null
|
||||
const selected = signed || (step.members.length > 0 ? step.members[0] : null);
|
||||
// 设置审批链信息
|
||||
function setFlowInfo(data: Api.Change.StepInfo[]) {
|
||||
const sortedSteps = [...data || []].sort((a, b) => a.step_order - b.step_order)
|
||||
flowInfo.value = sortedSteps.map(step => {
|
||||
return {
|
||||
stepId: step.id,
|
||||
name: step.name,
|
||||
countersign: step.countersign, // 添加会签标识
|
||||
selectedMember: selected? [selected] : [], // 选中的成员对象
|
||||
countersign: step.countersign,
|
||||
selectedMember: step.members,
|
||||
};
|
||||
});
|
||||
}
|
||||
// 更新审批链信息
|
||||
function setFlowInfo(data: Api.Change.StepInfo[]) {
|
||||
const sortedSteps = [...data || []].sort((a, b) => a.step_order - b.step_order)
|
||||
flowInfo.value = getSelectedMembers(sortedSteps);
|
||||
}
|
||||
function updateFlowInfo(data: Api.Change.FlowInfo[]) {
|
||||
flowInfo.value = data;
|
||||
}
|
||||
@@ -42,6 +36,7 @@ export const useChangeStore = defineStore(SetupStoreId.Change, () => {
|
||||
getStepsInfo,
|
||||
setStepsInfo,
|
||||
getFlowInfo,
|
||||
updateFlowInfo
|
||||
updateFlowInfo,
|
||||
flowInfo,
|
||||
}
|
||||
});
|
||||
Vendored
+3
-3
@@ -6,11 +6,11 @@ declare namespace Api {
|
||||
*/
|
||||
namespace Change {
|
||||
interface MemberInfo {
|
||||
id: number;
|
||||
is_sign: number;
|
||||
id?: number;
|
||||
is_sign?: number;
|
||||
org_id: number;
|
||||
org_name: string;
|
||||
specialty: string;
|
||||
specialty?: string;
|
||||
user_id: number;
|
||||
user_name: string;
|
||||
}
|
||||
|
||||
@@ -29,6 +29,13 @@ watch(() => props.currentForm, (newVal:any) => {
|
||||
...rest
|
||||
} = newVal;
|
||||
form.value = rest;
|
||||
// 用 Map 建立 question_id -> score 的映射,查找 O(1)
|
||||
const scoreMap = new Map(form.value?.level_score?.map((item:any) => [item.question_id, item.score]) || []);
|
||||
questions.value = questions.value.map((item:any) => ({
|
||||
...item,
|
||||
score: scoreMap.has(item.question_id) ? scoreMap.get(item.question_id) : item.score
|
||||
}));
|
||||
totalScore.value = questions.value.reduce((sum:number, item:any) => sum + (item.score || 0), 0);
|
||||
})
|
||||
|
||||
const aiFail = (e: any) => {
|
||||
@@ -69,6 +76,7 @@ const form = ref<{
|
||||
disciplines: string[],
|
||||
plan_use_date: number | null,
|
||||
risk_tools: string[],
|
||||
level_score: any[],
|
||||
}>({
|
||||
change_type: null,
|
||||
change_level: computed(() => totalScore.value >= 20 ? 2 : 1),
|
||||
@@ -85,6 +93,7 @@ const form = ref<{
|
||||
disciplines: [],
|
||||
plan_use_date: null,
|
||||
risk_tools: [],
|
||||
level_score: [],
|
||||
});
|
||||
// 变更目的选项
|
||||
const PURPOSE_OPTIONS = [
|
||||
@@ -811,7 +820,7 @@ defineExpose({form, questions, applyAiResult, generateLevel: useAiLevel})
|
||||
align-items: center;
|
||||
}
|
||||
.scroll {
|
||||
height: calc(100vh - 395px);
|
||||
height: calc(100vh - 393px);
|
||||
overflow-y: auto;
|
||||
}
|
||||
</style>
|
||||
@@ -72,7 +72,7 @@ const openApprovalDrawer = () => {
|
||||
if (item.members && item.members.length > 0) {
|
||||
// 优先选 is_sign=1 的成员 ,否则选第一个
|
||||
const defaultMembers = item.members
|
||||
.filter((m: any) => m.is_sign === 1)
|
||||
.filter((m: any) => m?.is_sign === 1)
|
||||
.map((m: any) => m.user_id);
|
||||
approvers.value[item.id] = defaultMembers.length > 0 ? defaultMembers : [item.members[0].user_id];
|
||||
}
|
||||
@@ -84,10 +84,11 @@ const openApprovalDrawer = () => {
|
||||
// 审批链
|
||||
const approvalChain = computed(() => {
|
||||
let template = getFlowInfo.value;
|
||||
console.log(template);
|
||||
if (!template || template.length === 0) return '暂无审批步骤'
|
||||
const parts = template.map((step: any) => {
|
||||
// 根据 countersign 决定显示名称
|
||||
const displayName = step.countersign ? '专业会签' : step.name
|
||||
const displayName = step.name
|
||||
const members = step.selectedMember
|
||||
let memberText;
|
||||
if (members && members.length > 0) {
|
||||
@@ -157,7 +158,7 @@ function matchApprovers(steps: any[], mapping: Record<number, number[]>) {
|
||||
for (const [stepId, usersId] of Object.entries(mapping)) {
|
||||
const step = steps.find(s => s.id === Number(stepId));
|
||||
if (step) {
|
||||
const members = step.members.filter((m: any) => usersId.includes(m.user_id));
|
||||
const members = props.members.filter((m: any) => usersId.includes(m.user_id));
|
||||
if (members.length > 0) {
|
||||
result.push({
|
||||
countersign: step.countersign,
|
||||
@@ -179,6 +180,7 @@ const finishApprover = async () => {
|
||||
}
|
||||
|
||||
defineExpose({clearApprovers, setRegenerateLoading})
|
||||
|
||||
</script>
|
||||
|
||||
<template>
|
||||
|
||||
Reference in New Issue
Block a user