import { CptModelName, SubModelName, ActionType } from './base'; import { BusinessTypeKey } from './gather'; import { IProcessMatter, IStepMatter } from './matter'; // 环节类型 export enum SectorType { APPROVAL = 'approval', // 审批 CONDITION = 'condition', // 条件 APOSTILLE = 'apostille', // 加签 } export enum ProcessStatus { WAITING = 'waiting', // 待审批 APPROVED = 'approved', // 审批通过 ACTIVATING = 'activating', // 当前流程 FAILED = 'failed', // 审批退回 } // 审批方式 export enum ApprovalWay { REPORT = 'report', // 上报审批 ACCOUNT = 'account', // 指定用户 JOINTLYSIGN = 'jointlySign', // 会签 ORSIGN = 'orSign', // 或签 ORDERAPPROVAL = 'orderApproval', // 依次审批 PREACCOUNT = 'prevAccount', // 上一审批人设置 } // 角色权限 export enum RolePermission { MY_REPORT = 'report', // 我的项目-项目上报 MY_FREE_REPORT = 'freeReport', // 我的项目-指定审批人 MY_ADD_PROJECT = 'addProject', // 我的项目-新建项目 MY_EDIT_PROJECT = 'editProject', // 我的项目-编辑项目 MY_EXPORT_PROJECT = 'exportProject', // 我的项目-导出项目 MY_DEL_PROJECT = 'delProject', // 我的项目-删除项目 MY_VIEW_PROJECT = 'viewProject', // 我的项目-查看项目 MY_VIEW_APPROVAL = 'viewApproval', // 我的项目-审批进度 MY_SAVE_INDEX = 'viewZbkProject', // 我的项目-指标入库 JOIN_VIEW_PARTICIPATING_PROJECT = 'viewParticipatingProject', // 我参与的项目-查看项目 JOIN_SAVE_INDEX = 'saveIndex', // 我参与的项目-指标入库 JOIN_EXPORT_PARTICIPATING_PROJECT = 'exportParticipatingProject', // 我参与的项目-导出项目 ALL_SET_PROJECT = 'setProjects', // 全部项目-项目设置 ALL_VIEW_ALL_PROJECTS = 'viewAllProjects', // 全部项目-查看项目 ALL_SAVE_INDEX = 'saveIndexAll', // 全部项目-指标入库 ALL_EXPORT_PROJECTS = 'exportProjects', // 全部项目-导出项目 ZBK_ENABLE = 'zbkEnable', // 指标库启用 ZBK_DYNAMIC = 'zbkDynamic', // 指标库-动态计算 ZBK_DELETE = 'zbkDelete', // 指标库-删除指标 ZBK_OPEN_PROJECT = 'zbkOpenProject', // 指标库-打开原始项目 ZBK_PROJECT_VISIBLE = 'zbkProjectVisibility', // 指标库-项目名称可见 ZBK_EDIT = 'zbkEdit', // 指标库-编辑 SAVE_INDEX = 'saveIndex', // 我参与的项目-指标入库 CJK_ENABLE = 'cjkEnable', // 材价库-启用 CJK_EDIT = 'cjkEdit', // 材价库-编辑 BACK_STAGE_ENABLE = 'backstageEnable', // 小后台权限 ENABLE_NOTICE = 'enableNotice', // 管理员发布通知 ENABLE_LOGO = 'enableLogo', DELETE_BUSINESS = 'deleteBusiness', RESUME_BUSINESS = 'resumeBusiness', VIEW_RECYCLEBIN = 'viewRecycleBin', // TODO 指标库 区间对数 } // 系统角色 export enum RoleType { SYSTEM = 'system', SYSTEM_NORMAL = 'systemNormal', NORMAL = 'normal', } // 角色 export interface IRole { ID: string; name: string; roleType: RoleType; frontPermission: RolePermission[]; backstagePermission: string[]; // 后台权限 } // 参与者模式 export enum ParticipantMode { ACCOUNT = 'account', // 用户模式 ROLE = 'role', // 角色模式(未来) } export enum AccountConfigure { SKIP = 'skip', // 允许跳过 RETURN = 'return', // 允许退回 REVOKE = 'revoke', // 允许撤回 ASSISTAUDIT = 'assistAudit', // 协审 ADDSIGN = 'addSign', // 加签 NEXTSECTOR = 'nextSector', // 是否可添加环节 } export interface ICoreView { ID: string; // 用户ID projectIDs: string[]; // 充许协审的单位工程ID,为空数组时表示可以协审当前环节的所有项目 } export interface IProcessAccount { // ID 账号ID name 名称institutionID 企事业ID ID: string; name: string; // 曾用名,不会变动 institutionID?: string; // 单位ID(可能不会用到) institutionName?: string; // 单位名称(不要保存到数据库,而是在使用的时候通过ID去查) status: ProcessStatus; // 审批状态 alreadyAddProcess?: boolean; // 是否已经添加了新环节(暂时用的,用于标记是否添加了环节,以后可能删除) configure: AccountConfigure[]; // 权限配置 remark: string; // 审批意见(肯定有,会有默认值) coreViews: ICoreView[]; // 协审人信息 projectIDs: string[]; // 允许审批的单位工程ID,为空数组时表示可以审批当前环节的所有项目 } // 参与者信息 export interface IParticipantInfo { approvalWay: ApprovalWay; participantMode: ParticipantMode; accounts: IProcessAccount[]; } // 后台的 // 流程中的一个环节 export interface IProcess { ID: string; name: string; sectorType: SectorType; seq?: number; createdByProcess?: string; // 上环节ID, 表示哪个环节创建的(上环节添加的) time?: number; // 当前环节完成时间(仅当审批通过或审批退回时会有时间) participantInfo: IParticipantInfo; afterAuditMoney?: number; // 审后的金额 referenceID?: string; // 流程引用的templateID添加 } export interface Members { ID: string; approvalStatus: string; approvalTime: number | string; approvalComment: string; name?: string; institutionID?: string; institutionName?: string; approvedType?: string; } export interface IProcessExecutorSelectedInfo { ID: string | number; label: string; rangeType: string; icon?: string; [key: string]: any; } // 3合1执行者 export interface IProcessExecutor { ID: string; permission: string[]; configure: string[]; businessType: BusinessTypeKey; gatherID: string; setType: string; participantMode: string; name: string; dataID: string; reportTime?: string; // 三合一审批流程第一位的上报时间 scope?: string; members?: Members[]; // 事项中组件及其权限 inProcessMatters?: IProcessMatter[]; // 事项后组件及其权限 afterProcessMatters?: IProcessMatter[]; // 用户选择器选择的值,用于回显 selectedInfo?: IProcessExecutorSelectedInfo; } // 动态步骤执行者信息(选择执行者的负责人) export interface IExecutorManager { type: string; memberID: string; userSelectVal: IProcessExecutorSelectedInfo; } export interface SimpleDynamicStep { stepID: string; stepName: string; executorID?: string; executorName?: string; } // export interface ICollaboratorPermission { // matterID: string; // form: string[]; // cost: string[]; // profile: string[]; // } export interface ICollaboratorExecutorInfo { executorID: string; executorName: string; executorDataID?: string; } // 3合1协审人信息 export interface ICollaborator { ID: string; // 用户ID creatorID?: string; // 创建协审人的ID canAddCo?: boolean; // 该协审是否可以添加协审 enable?: boolean; // 是否启用(目前只用在固定协审人上面) executorInfo?: ICollaboratorExecutorInfo; // 执行者 fixCollaborator?: boolean; institutionID?: string; // 机构ID,只在协审角色为审批单位的时候存在 name?: string; // 用户姓名 deadline: string | number; // 截至时间 // 事项中组件及其权限 inProcessMatters?: IProcessMatter[]; // 事项后组件及其权限 afterProcessMatters?: IProcessMatter[]; } // 3合1添加协审下拉选项 export interface ICollaboratorItem { institutionID?: string; institutionName?: string; approvalMembers: string[]; approverName?: string; executorInfo?: ICollaboratorExecutorInfo; } // 三合一协审人范围 export interface ICollaboratorScope { type: string; accounts: string[]; institutionRoles: string[]; } // 组件权限配置(主审、固定协审通用) export interface IComponentPermissionConfig { matterID: string; formPermission?: string[]; costPermission?: string[]; profilePermission?: string[]; auditCommentsPermission?: string[]; settlementPermission?: string[]; budgetComparePermission?: string[]; changeAuditPermission?: string[]; } // 固定协审配置 export interface IFixedCollaboratorConfig { executors: string[]; // 固定协审 permissions: IComponentPermissionConfig[]; cooperative?: boolean; // 固定协审人是否可以添加协审 } // 参与者配置项 export interface IParticipantConfig { type: string; accounts?: string[]; institutionRoles?: string[]; fixedCollaborators?: IFixedCollaboratorConfig[]; cooperations?: { type: string; value: string }[]; [key: string]: any; } export interface IProcedureParticipantExecutor { ID: string; members?: Members[]; reportTime?: string | number; approvaledPermission?: string[]; // 事项后原始数据 inProcessMatters?: IProcessMatter[]; afterProcessMatters?: IProcessMatter[]; } // 3合1参与者信息 export interface IProcedureParticipantInfo { approvalWay: string; configure?: IParticipantConfig[]; executor: IProcedureParticipantExecutor; collaborators: ICollaborator[]; dynamicSteps: SimpleDynamicStep[]; stepMatters?: IStepMatter[]; } // 3合1分支判断信息 export interface IConditionItem { ID: string; field: string; type: string; symbol: string; value: string; } // 3合1分支条件信息 // eslint-disable-next-line prettier/prettier, no-use-before-define export interface IConditionInfoItem { ID: string; conditions: IConditionItem[]; // eslint-disable-next-line prettier/prettier, no-use-before-define process: T[]; } export interface IApostilleInfo { parentProcessID: string; parentProcessReferenceID: string; nextProcessID?: string; afterApostille?: string; } export interface IReturnInfo { process: string; rule: 'skip' | 'restart'; } export interface IReturnProcessInfo { nextProcessReferenceID?: string; rule?: 'skip' | 'restart'; } // 3合1步骤中的一个环节 export interface IProcedureProcess { ID: string; referenceID: string; name: string; sectorType: SectorType; isReportProcess?: boolean; // 是否上报环节(因为上报环节是特殊的,所以加个字段方便处理) participantInfo?: IProcedureParticipantInfo; conditionInfo?: IConditionInfoItem[]; apostilleInfo?: IApostilleInfo; returnInfo?: IReturnProcessInfo; condition?: { ID: string; processID: string; field: string; fieldValue: string; }; // 步骤事项中的造价是否可编辑 costEditable?: boolean; } export interface IProcedureItem { ID: string; approvalStatus: string; content: string; approvalTime: string; firstApprovalTime?: string; executor?: IProcessExecutor; executorProcessMatter?: { inProcessMatters: IProcessMatter[]; afterProcessMatters: IProcessMatter[]; }; collaborators?: ICollaborator[]; isReportProcess?: boolean; // members?: executorMember[]; processID?: string; approvalWay?: string; dynamicSteps?: SimpleDynamicStep[]; stepMatters?: IStepMatter[]; nextProcessSectorType?: SectorType; conclusion?: string; addition?: string; reduction?: string; configure?: IParticipantConfig[]; sectorType?: 'apostille' | 'condition' | 'approval'; apostilleInfo?: IApostilleInfo; apostilleProcess?: IProcedureItem; returnInfo?: IReturnProcessInfo; } export interface IScopeType { type: string; value: string; } export interface IApproval { ID: string; name: string; createdID: string; createdTime: number; process: IProcess[]; templateProcess?: IProcedureProcess[]; // 三合一需要用的流程模板 scope?: IScopeType[]; subjectID?: string; businessType?: BusinessTypeKey; matterListID?: string; institutionID?: string; monitorPermission?: { approvalBrief: IScopeType[]; approvalLog: IScopeType[]; approvalProgress: IScopeType[]; }; } export enum ApprovalStatus { CREATED = 'created', // 创建完成 PROCESSING = 'processing', // 正在审批 APPROVED = 'approved', // 审批通过 } // 造价文件(费用项、建设项目)的添加类型 export enum CostFileAddType { // 上报(第一步新增) REPORT = 'report', // 步骤中新增 ADD = 'add', // 增报 ADD_REPORT = 'addReport', } // 新增的、增报的费用项、 建设项目需要存储的步骤信息 export interface IAddCostFileInfo { addType: CostFileAddType; // 来自步骤ID添加的 processID: string; // 来自步骤ID添加的 processName: string; // 创建人ID creatorID: string; // 创建人名字 creatorName: string; } // 审核费用类型 export enum AuditMoneyType { // 建设项目相关费用 CONSTRUCTION = 'construction', // 费用项 FEE_ITEM = 'feeItem', } export interface IProcessAuditMoney { ID: string; type: AuditMoneyType; // 来源ID,有的数据是基于某条数据拷贝而来的,sourceID为被拷贝数据的ID,方便查找源数据 sourceID?: string; processID: string; addInfo?: IAddCostFileInfo; data: any[]; } // 复制到项目里的流程 export interface IProjectApproval extends IApproval { financialProjectID: string; // 财审项目ID constructionID: string; // 建设项目ID projectIDs: string[]; // 包含在流程里的项目(单位工程) status: ApprovalStatus; // 状态 approvalTime?: number; // 审批通过时间 currentProcessID?: string; // 当前正处于哪个环节ID businessID?: string; // 业务ID gatherID?: string; } // 三合一项目里的流程 export interface IProcedureApproval { ID: string; name?: string; gatherID: string; businessType: BusinessTypeKey; businessID: string; templateProcess: IProcedureProcess[]; process: IProcedureProcess[]; } // 流程过程中存储的数据 export interface IProcessData { ID: string; module: CptModelName | SubModelName; // 编辑的模块 action: ActionType; // 动作,增删改等 oDoc: any; // 存放删除时或者修改时的数据 createTime: number; // 创建时间 } // 备份数据集合 export interface IProcessDataDoc { projectID: string; processID: string; index: number; processData: IProcessData[]; } // 环节状态(精简) export enum SimpleProcessStatus { APPROVED = 'approved', // 审批通过 FAILED = 'failed', // 失败 REPORTED = 'reported', // 上报 APOSTILLE = 'apostille', // 加签 } // 审批待办类型 export enum ApprovalType { APPROVER = 'approver', // 审批 COREVIEW = 'coreview', // 协审 REPORT = 'report', // 上报 } export enum FinancialProjectStatus { UNREPORTED = 'unreported', APPROVING = 'approving', COMPLETION = 'completion', } // 流程环节待办列表项 export interface IApprovalTodoData { approvalID: string; // 流程 id processID: string; // 环节 id financialProjectID: string; // 项目 ID constructionID?: string; // 建设项目 ID projectName?: string; // 项目名称 reporterID?: string; // 发起人ID reporterName?: string; // 发起人名称 lastID?: string; // 上环节ID(暂定为上环节用户ID,之后可能为上环节ID) lastName?: string; // 上环节名称(暂定为上环节用户名称,之后可能为上环节名称) 三合一是上环节名称 nextID?: string; // 下一个步骤ID(三合一) nextName?: string; // 下一个步骤名称(三合一) reportTime?: number; // 上报时间 lastStatus?: SimpleProcessStatus; // 上一环节的状态 approveTime?: number; // 当前环节审批时间 approveType?: SimpleProcessStatus; // 审批办结状态 moveUserID?: string; // 环节流转(用户ID) moveUserName?: string; // 环节流转(用户名) approvalStatus?: ApprovalStatus; // 审批流程的状态 type: ApprovalType; // 审批待办类型 gatherID?: string; genTodoDataTime?: number; // 生成todoData的时间 } export interface IApprovalTodoData2 { approvalID: string; // 流程 id processID: string; // 环节 id financialProjectID: string; // 项目 ID constructionID: string; // 建设项目 ID projectName?: string; // 项目名称 // reporterID: string; // 发起人ID (删) // reporterName: string; // 发起人名称(删) lastID?: string; // 为上环节用户ID lastName?: string; // 上环节用户名称 // reportTime: number; // 上报时间(删) lastStatus?: SimpleProcessStatus; // 上环节办结状态 // approveTime: number; // 审批办结时间(删) approveType?: SimpleProcessStatus; // 审批办结状态 // approvalStatus: ApprovalStatus; // 审批流程的状态(删) moveUserID?: string; // 环节流转(用户ID) moveUserName?: string; // 环节流转(用户名) type: ApprovalType; // 审批待办类型 } export enum TodoType { APPROVAL = 'approval', } export enum TodoStatus { REMAIN = 'remain', COMPLETED = 'completed', } export interface ITodo { ID: string; // 待办 ID userID: string; // 用户 ID createdTime: number; // 创建时间(相当于环节流转时间) completedTime: number; // 完成时间(相当于审批办结时间) todoType: TodoType; data: any; status: TodoStatus; } export interface IApprovalTodo extends ITodo { data: IApprovalTodoData; isWarning?: boolean; isEmergency?: boolean; stayTime?: number; } export enum ChangeRecord { CURRENT = 'current', // 当前清单 ALLBILLS = 'all-bills', // 全部清单 ALLGLJS = 'all-gljs', // 全部材价 } export enum BusinessType { /** 预算 */ BUDGET = 'undo', /** 结算 */ SETTLEMENT = 'doing', /** 决算 */ FINAL = 'done', } export enum BusinessStatus { /** 未上报 */ UNREPORTED = 'unreported', /** 审批中 */ APPROVING = 'approving', /** 审批完成 */ COMPLETION = 'completion', } export interface IBusinessApprovalItem { ID?: string; name?: string; code?: string; gatherID?: string; businessType?: BusinessType; status?: BusinessStatus; /** 送审时间 */ sendReviewTime?: string; /** 审结时间 */ completionTime?: string; /** 送审金额 */ reportMoney?: string; /** 审结金额 */ conclusion?: string; /** 审增金额 */ addition?: string; /** 审减金额 */ reduction?: string; created?: string; createdID?: string; createTime?: string; } export interface IConditionSetting { ID: string; gatherID: string; schema?: string; } // 审核金额 核减、增金额数据 export interface IAuditSummaryDiff { // 核减金额 decFee: string; // 核增金额 incFee: string; // 核减率 decRate: string; // 核减率提示 decRateTips?: string; // 核增率 incRate: string; // 核增率提示 incRateTips?: string; } // 审批金额汇总表数据 export interface IAuditSummaryItem { // 阶段 stage: string; // 执行者名称 executor: string; // 执行者单位 institution: string; // 审核步骤名称 process: string; // 审结时间 approvalTime: string; // 金额 fee: string; // 大写金额 feeInWords: string; // 与上一阶段对比 compareToPrev: IAuditSummaryDiff; // 与上送审对比 compareToReport: IAuditSummaryDiff; } // 审核明细数据 export interface IAuditDetailItem { // 唯一标识,table渲染需要 ID: string; // 步骤名 process: string; // 单位 institution: string; // 姓名 userName: string; // 角色:负责人、协审 role: string; // 起始金额 beginFee: string; // 结束金额 endFee: string; // 审增 incFee: string; // 审减 decFee: string; // 增减比例 rate: string; // 状态文本 status: string; // 审核状态 approvalStatus: string; // 协审为子项 children: IAuditDetailItem[]; } // 审核意见表(入库数据) export interface IAuditComment { ID: string; // 业务ID businessID: string; // 关联模板步骤ID(一个步骤只有一份意见,所以得用模板ID,不能用全环节中的步骤) refProcessID: string; // 富文本 richText: string; // 创建时间 createTime: number; // 更新时间 updateTime: number; // 富文本模板(只有第一版才有内容,方便还原模板) template?: string; } // 审核意见历史 export interface IAuditCommentHistory { // 意见ID commentID: string; // 步骤 process: string; // 版本(第几版) version: string; // 执行者 executor: string; // 单位 institution: string; // 审批通过时间 approvalTime?: string; // 审批状态 status: ProcessStatus; } // 传统结算未上报数据 export interface ISettlementItem { // 建设项目ID constructionID: string; // 名称 name: string; // 项目原报金额 orgFee: string; // 当前步骤审核金额 curFee: string; // 清单检测合格率 billCheckRate: string; // 费用项ID feeID?: string; // 费用类型 type?: AuditMoneyType; // 备注 remark?: string; } // 传统结算已上报审核数据 export interface ISettlementAuditItem { // 唯一标识,table渲染需要 ID: string; // 建设项目ID constructionID?: string; // 名称 name: string; // 起始金额 beginFee?: string; // 结束金额 endFee?: string; // 增减金额 incFee?: string; decFee?: string; // 增减率 incRate?: string; decRate?: string; // 审核通过时间 approvalTime?: string; // 用户信息 user?: { name: string; institution: string; executor: string; }; // 审核状态 approvalStatus?: string; children: ISettlementAuditItem[]; // 数据是否是原始数据(有的费用项是从上一步拷贝而来的,不给删除) isOriginal?: boolean; // 费用项ID feeID?: string; // 费用类型 type?: AuditMoneyType; // 备注 remark?: string; // 新增、增报项目费用项步骤信息 addInfo?: IAddCostFileInfo; // 等待审批通过的行 waitApproved?: boolean; } // 概算预算阶段造价对比 审核明细表格数据 export interface IBudgetEstimateTableItem { name: string; // 原报金额 reportFee: string; // 审核金额 auditFee: string; // 增减金额 incFee?: string; decFee?: string; // 增减率 incRate?: string; decRate?: string; // 审核状态 approvalStatus?: string; // 审核状态文本 approvalStatusText?: string; } export interface IApostilleParamUser { ID?: string; type?: string; } export enum AddSignType { MYDEPARTMENT = 'myDepartment', // 本部门 ALLDEPARTMENT = 'allDepartment', // 本部门及下属部门 MYINSTITUTION = 'myInstitution', // 本单位 ACCOUNT = 'account', // 用户 INSTITUTION = 'institution', // 单位 DEPARTMENT = 'department', // 部门 CONSTRUCTION = 'construction', // 建设单位 CONSULTING = 'consulting', // 咨询单位 AUDIT = 'audit', // 审核单位 ALLEXECUTOR = 'allExecutor', // 执行者目录 EXECUTOR = 'executor', // 执行者 ALLINSTITUTIONROLE = 'allInstitutionRole', // 单位接收人目录 INSTITUTIONROLE = 'institutionRole', // 单位接收人 } export enum RangeSelectType { USER = 'user', ROLE = 'role', } export interface IRangeSelectTree { ID: string | number; label: string; rangeType: T; children?: IRangeSelectTree[]; icon?: string; [key: string]: any; } export interface IApostilleParam { permissions: Record; user: IApostilleParamUser; afterApostille: 'next' | 'me'; canCollaborate: boolean; collaborators: IRangeSelectTree[]; } export enum EApprovalPermission { DELETE_BUSINESS = 'deleteBusiness', RESUME_BUSINESS = 'resumeBusiness', VIEW_RECYCLEBIN = 'viewRecycleBin', }