interface ServerProjectContext extends ProjectContext {
// 基础属性
$CAN_EDIT: boolean; // 是否可编辑
$CHILDREN: Array<Form>; // 子表单列表
$DELAY_LEVEL: DelayLevel; // 延迟级别信息
// @see /develop/entity/#enumerated-values
$FLOW: FlowEntity;
$META_FORM_FIELD: Record<string, any>; // 主表单字段值映射
$META_FORM_FIELD_2_VALUE: Record<string, { // 主表单字段值和类型映射
value: any;
type: string;
}>;
$META_FORM_RULE: Record<string, FormRule>; // 主表单规则映射
$META_FORM_TITLE: Record<string, any>; // 主表单标题值映射
$META_FORM_TITLE_2_VALUE: Record<string, { // 主表单标题值和类型映射
value: any;
type: string;
}>;
$ORG_CFG: OrgConfig; // 组织配置信息
$P: Record<string, boolean>; // 权限判定方法集合
$PARENTS: Array<Form>; // 父表单列表
$PROJECT: ProjectEntity; // 项目信息
$RELATED_FORMS: Array<Form>; // 关联表单列表
$STATUS: Record<string, any>; // 流程状态信息
$STEP_FORM_FIELD: Record<string, any>; // 步骤表单字段值映射
$STEP_FORM_FIELD_2_VALUE: Record<string, { // 步骤表单字段值和类型映射
value: any;
type: string;
}>;
$STEP_FORM_RULE: Record<string, FormRule>; // 步骤表单规则映射
$USER_INFO: UserInfo; // 用户信息
$_: typeof lodash; // Lodash工具库
// 模型操作
model(name: string): Model; // 获取指定模型实例
$model(name: string): Model; // 获取指定模型实例(同model)
// 搜索操作
$search(reportEsQuery: object): Promise<SearchResult>; // 执行ES搜索查询
// 服务操作
$service(name: string): Service; // 获取服务实例
// 工具库
$moment: typeof moment; // moment日期处理库
$lodash: typeof lodash; // lodash工具库
// 数据转换工具
// Field转换
$transformField2Value(values: Array<{field: string; value: any}>): Record<string, any>;
$transformField2Rule(rule: Array<{field: string; rule: any}>, flat?: boolean): Record<string, any>;
// Title转换
$transformTitle2Value(values: Array<{title: string; value: any}>): Record<string, any>;
$transformTitle2Rule(rule: Array<{title: string; rule: any}>, flat?: boolean): Record<string, any>;
// Key转换
$transformKey2Value(values: Array<{key: string; value: any}>): Record<string, any>;
$transformKey2Rule(rule: Array<{key: string; rule: any}>, flat?: boolean): Record<string, any>;
// 订阅相关
$subscribe(table: string, id: number, option?: ResetProjectStepOwnerOption): Promise<void>; // 订阅指定表的指定记录, 只在当前环节负责人分配脚本可用, 对应记录有变更操作时将会重新执行当前环节负责人分配脚本重新分配环节负责人
$subScribeForm(form_id: number, option?: ResetProjectStepOwnerOption): Promise<void>; // 订阅指定表单的记录, 只在当前环节负责人分配脚本可用, 对应记录有变更操作时将会重新执行当前环节负责人分配脚本重新分配环节负责人
// // 用于识别是否由订阅事件触发的脚本,可以依据此标识避免一些函数副作用
// trigger_by_subscription?: boolean;
}
interface ResetProjectStepOwnerOption {
/** 是否全匹配, 为true 时删除掉老负责人数据中在新配置中不存在的人 */
full_match?: boolean;
/** 变更原因 */
reason?: string;
/** 操作批次,修改多个项目多个环节负责人可以共享一个批次 */
batch_id?: string;
/** 操作人id */
user_id?: number;
/** 是否对被修改的正在进行中的环节相关负责人发送通知 */
send_message?: boolean;
}