evoToK3Cloud-vue/src/utils/projectStatusLock.js
andy 8a46079e60 新增加两个项目类型: 10 取消出图 11不需要出图
PS: 总经办-毕敏霞提出, 并说明, 不需要对应功能, 只需要改状态就行
2026-11-07 11:23:13 +08:00

87 lines
2.8 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/**
* 项目状态(bomStatus)—— 与后端 ProjectStatusLock 保持一致。
* 页面展示 / 筛选 / 设置状态都用这一套,不再读字典 process_status。
*
* 8 工艺审核完成:禁止出图、禁止上传工艺路线
* 6 开始生产 / 7 生产完成:禁止出图、上传工艺路线、推送工艺、更新物料清单
*/
export const ProjectStatusAction = {
DRAWING: "DRAWING",
UPLOAD_ROUTE: "UPLOAD_ROUTE",
PUSH_ROUTE: "PUSH_ROUTE",
UPDATE_MATERIAL: "UPDATE_MATERIAL",
};
const ACTION_LABEL = {
DRAWING: "出图",
UPLOAD_ROUTE: "上传工艺路线",
PUSH_ROUTE: "推送工艺",
UPDATE_MATERIAL: "更新物料清单",
};
/** 与后端写入值一致;5 为历史残留,展示等同开始生产,不出现在下拉 */
export const PROJECT_STATUS_MAP = {
0: "方案设计完成",
1: "设计出图完成",
2: "工艺待审核",
3: "已推送BOM",
4: "已推送工艺",
5: "开始生产",
6: "开始生产",
7: "生产完成",
8: "工艺审核完成",
9: "工艺审核拒绝",
};
export const PROJECT_STATUS_OPTIONS = [
{ value: 0, label: "方案设计完成" },
{ value: 1, label: "设计出图完成" },
{ value: 2, label: "工艺待审核" },
{ value: 3, label: "已推送BOM" },
{ value: 4, label: "已推送工艺" },
{ value: 6, label: "开始生产" },
{ value: 7, label: "生产完成" },
{ value: 8, label: "工艺审核完成" },
{ value: 9, label: "工艺审核拒绝" },
{ value: 10, label: "取消出图" },
{ value: 11, label: "不需要出图" },
];
export function projectStatusLabel(bomStatus) {
const s = bomStatus === null || bomStatus === undefined || bomStatus === ""
? null
: Number(bomStatus);
if (s === null || Number.isNaN(s)) return "未知";
return PROJECT_STATUS_MAP[s] || String(s);
}
export function denyIfProjectStatusLocked(bomStatus, action) {
if (bomStatus === null || bomStatus === undefined || bomStatus === "" || !action) {
return null;
}
const s = Number(bomStatus);
if (Number.isNaN(s)) return null;
const productionLocked = s === 5 || s === 6 || s === 7;
const routeApproved = s === 8;
if (action === ProjectStatusAction.DRAWING || action === ProjectStatusAction.UPLOAD_ROUTE) {
if (productionLocked || routeApproved) {
return `当前项目状态为「${projectStatusLabel(s)}」,不允许${ACTION_LABEL[action]}`;
}
return null;
}
if (action === ProjectStatusAction.PUSH_ROUTE || action === ProjectStatusAction.UPDATE_MATERIAL) {
if (productionLocked) {
return `当前项目状态为「${projectStatusLabel(s)}」,不允许${ACTION_LABEL[action]}`;
}
return null;
}
return null;
}
export function isProjectStatusLocked(bomStatus, action) {
return !!denyIfProjectStatusLocked(bomStatus, action);
}