|
|
@@ -1,10 +1,24 @@
|
|
|
-import { IRecentUser, IUser } from './user';
|
|
|
+import { IOption } from './option';
|
|
|
+import { ICompilation } from './compilation';
|
|
|
+import { EntityType, IUser } from './user';
|
|
|
+import { ISystemSetting, ProjectType } from '.';
|
|
|
|
|
|
+// 分享类型
|
|
|
export enum ShareType {
|
|
|
- PROJECT = 1, // 项目
|
|
|
- RATION_LIB, // 定额库
|
|
|
- GLJ_LIB, // 工料机库
|
|
|
- PRICE_TEMPLATE, // 租价模板
|
|
|
+ PROJECT = 'project', // 项目
|
|
|
+ RATION_LIB = 'rationLib', // 定额库
|
|
|
+ GLJ_LIB = 'gljLib', // 工料机库
|
|
|
+ PRICE_TEMPLATE = 'priceTemplate', // 租价模板
|
|
|
+}
|
|
|
+
|
|
|
+// 分享版本
|
|
|
+export enum ShareVersion {
|
|
|
+ // 个人版
|
|
|
+ PERSON = 'person',
|
|
|
+ // 企业版
|
|
|
+ ENTERPRISE = 'enterprise',
|
|
|
+ // 成员协作
|
|
|
+ MEMBER_COOPERATION = 'memberCooperation',
|
|
|
}
|
|
|
|
|
|
// 分享权限
|
|
|
@@ -13,29 +27,45 @@ export interface ISharePermission {
|
|
|
allowCooperate: boolean;
|
|
|
}
|
|
|
|
|
|
-export interface IShareProject extends ISharePermission {
|
|
|
- shareDate?: number;
|
|
|
- updateDate?: number;
|
|
|
- projectID: string; // 项目ID
|
|
|
- compilationID: string;
|
|
|
- isRead?: boolean;
|
|
|
-}
|
|
|
-
|
|
|
-export interface IShareLib extends ISharePermission {
|
|
|
- shareDate?: number;
|
|
|
- updateDate?: number;
|
|
|
- compilationID: string;
|
|
|
-}
|
|
|
-
|
|
|
-export interface IShare {
|
|
|
+/* export interface IShare {
|
|
|
ID: string;
|
|
|
- owner: string;
|
|
|
- receiver: string;
|
|
|
+ version: ShareVersion;
|
|
|
+ ownerID: string;
|
|
|
+ ownerType: EntityType;
|
|
|
+ // 负责人ID
|
|
|
+ managerID: string;
|
|
|
+ receiverID: string;
|
|
|
+ receiverEnterpriseID?: string;
|
|
|
recentDate: number;
|
|
|
projectList: IShareProject[];
|
|
|
rationLibList: IShareLib[];
|
|
|
gljLibList: IShareLib[];
|
|
|
priceTemplateList: IShareLib[];
|
|
|
+} */
|
|
|
+
|
|
|
+export interface IShareBase extends ISharePermission {
|
|
|
+ ID: string;
|
|
|
+ version: ShareVersion;
|
|
|
+ type: ShareType;
|
|
|
+ ownerID: string;
|
|
|
+ ownerType: EntityType;
|
|
|
+ userID: string;
|
|
|
+ enterpriseID: string;
|
|
|
+ receiverID: string;
|
|
|
+ receiverEnterpriseID: string;
|
|
|
+ shareDate: number;
|
|
|
+ updateDate: number;
|
|
|
+}
|
|
|
+
|
|
|
+export interface IShareProject extends IShareBase {
|
|
|
+ projectID: string; // 项目ID
|
|
|
+ constructionID: string; // 项目所属建设项目ID,涉及到一些层级,有这个字段会更方便
|
|
|
+ compilationID: string;
|
|
|
+ isRead?: boolean;
|
|
|
+}
|
|
|
+
|
|
|
+export interface IShareLib extends IShareBase {
|
|
|
+ compilationID: string;
|
|
|
}
|
|
|
|
|
|
export type ShareItem = IShareProject | IShareLib;
|
|
|
@@ -44,18 +74,35 @@ export type ShareItem = IShareProject | IShareLib;
|
|
|
export interface IShareHistory extends ISharePermission {
|
|
|
ID: string; // 分享ID
|
|
|
user: Partial<IUser>;
|
|
|
+ enterpriseID?: string;
|
|
|
+ enterpriseName?: string;
|
|
|
shareType: ShareType;
|
|
|
projectID?: string;
|
|
|
compilationID?: string;
|
|
|
}
|
|
|
|
|
|
+export interface ICreateShareProject extends ISharePermission {
|
|
|
+ ID: string;
|
|
|
+ projectID: string; // 项目ID
|
|
|
+ constructionID: string; // 项目所属建设项目ID,涉及到一些层级,有这个字段会更方便
|
|
|
+ compilationID: string;
|
|
|
+}
|
|
|
+
|
|
|
+export interface ICreateShareLib extends ISharePermission {
|
|
|
+ ID: string;
|
|
|
+ compilationID: string;
|
|
|
+}
|
|
|
+
|
|
|
export interface ICreatShare {
|
|
|
- receiver: string;
|
|
|
- doc: ShareItem;
|
|
|
+ receiverID: string;
|
|
|
+ receiverEnterpriseID: string; // 一个用户可能有多个企业,需要记住企业ID
|
|
|
+ doc: ICreateShareProject | ICreateShareLib;
|
|
|
type: ShareType;
|
|
|
}
|
|
|
|
|
|
export interface IUpdateShare {
|
|
|
+ receiverID: string;
|
|
|
+ receiverEnterpriseID: string;
|
|
|
filter: { ID: string; projectID?: string; compilationID?: string };
|
|
|
update: {
|
|
|
updateDate?: number;
|
|
|
@@ -67,18 +114,159 @@ export interface IUpdateShare {
|
|
|
}
|
|
|
|
|
|
export interface IDelShare {
|
|
|
+ receiverID: string;
|
|
|
+ receiverEnterpriseID: string;
|
|
|
filter: { ID: string; projectID?: string; compilationID?: string };
|
|
|
type: ShareType;
|
|
|
}
|
|
|
|
|
|
export interface IBulkShare {
|
|
|
update?: IUpdateShare[];
|
|
|
- create?: { ID: string; docs: ICreatShare[] };
|
|
|
+ create?: ICreatShare[];
|
|
|
remove?: IDelShare[];
|
|
|
}
|
|
|
|
|
|
+// 分享链接
|
|
|
+export interface IShareLink {
|
|
|
+ // 链接ID
|
|
|
+ ID: string;
|
|
|
+ // 是否需要密码
|
|
|
+ needPassword: boolean;
|
|
|
+ // 密码
|
|
|
+ password?: string;
|
|
|
+ // 分享的项目ID
|
|
|
+ projectID: string;
|
|
|
+ // 所属建设项目ID
|
|
|
+ constructionID: string;
|
|
|
+ // 项目所属费用定额ID
|
|
|
+ compilationID: string;
|
|
|
+ // 拥有者ID
|
|
|
+ ownerID: string;
|
|
|
+ ownerType: EntityType;
|
|
|
+ // 创建链接的人ID
|
|
|
+ creatorID: string;
|
|
|
+ // 分享时间
|
|
|
+ shareDate: number;
|
|
|
+}
|
|
|
+
|
|
|
+// 最近分享 条目
|
|
|
+export interface IRecentShareItem {
|
|
|
+ userID: string;
|
|
|
+ enterpriseID: string;
|
|
|
+ recentDate: number;
|
|
|
+}
|
|
|
+
|
|
|
+// 最近分享
|
|
|
+export interface IRecentShare {
|
|
|
+ userID: string;
|
|
|
+ enterpriseID: string;
|
|
|
+ // 个人版
|
|
|
+ personVer: IRecentShareItem[];
|
|
|
+ // 企业版
|
|
|
+ enterpriseVer: IRecentShareItem[];
|
|
|
+ // 成员协作
|
|
|
+ memberCooperation: IRecentShareItem[];
|
|
|
+}
|
|
|
+
|
|
|
+// 最近分享用户
|
|
|
+export interface IRecentShareUser {
|
|
|
+ userID: string;
|
|
|
+ name: string;
|
|
|
+ mobile: string;
|
|
|
+ enterpriseID?: string;
|
|
|
+ enterpriseName?: string;
|
|
|
+ recentDate: number;
|
|
|
+}
|
|
|
+
|
|
|
// 初始化分享弹窗时需要的数据
|
|
|
export interface IPreparePopup {
|
|
|
- history: IShareHistory[];
|
|
|
- recentContacts: IRecentUser[];
|
|
|
+ // 个人版已分享
|
|
|
+ personHistory: IShareHistory[];
|
|
|
+ // 企业版已分享
|
|
|
+ enterpriseHistory: IShareHistory[];
|
|
|
+ // 成员协作已分享
|
|
|
+ memberCoHistory: IShareHistory[];
|
|
|
+ // 个人版最近分享
|
|
|
+ personRecentUsers: IRecentShareUser[];
|
|
|
+ // 企业版最近分享
|
|
|
+ enterpriseRecentUsers: IRecentShareUser[];
|
|
|
+ // 成员协作最近分享
|
|
|
+ memberCoRecentUsers: IRecentShareUser[];
|
|
|
+ // 分享链接
|
|
|
+ shareLink?: IShareLink;
|
|
|
+}
|
|
|
+
|
|
|
+// 检查分享链接时需要的信息
|
|
|
+export interface IShareLinkInfo {
|
|
|
+ // 链接ID
|
|
|
+ ID: string;
|
|
|
+ // 是否需要密码
|
|
|
+ needPassword: boolean;
|
|
|
+ // 项目所属费用定额ID
|
|
|
+ compilationID: string;
|
|
|
+ // 分享的项目ID
|
|
|
+ projectID: string;
|
|
|
+ // 所属建设项目ID
|
|
|
+ constructionID: string;
|
|
|
+ // 分享的项目名称
|
|
|
+ projectName: string;
|
|
|
+ // 分享链接的人名
|
|
|
+ creatorName: string;
|
|
|
+}
|
|
|
+
|
|
|
+// 进入分享链接项目前准备数据
|
|
|
+export interface IPrepareShareLinkProject {
|
|
|
+ // 分享链接项目的费用定额数据
|
|
|
+ compilation: ICompilation;
|
|
|
+ // 选项信息
|
|
|
+ option: IOption;
|
|
|
+ // 系统设置信息
|
|
|
+ systemSetting: ISystemSetting;
|
|
|
+ // 报表设置信息(用户)
|
|
|
+ customizeCfg: any;
|
|
|
+}
|
|
|
+
|
|
|
+// 接收到的项目数据
|
|
|
+export interface IReceivedShareProject {
|
|
|
+ // 项目ID
|
|
|
+ ID: string;
|
|
|
+ // 项目类型
|
|
|
+ type: ProjectType;
|
|
|
+ // 建设项目名称
|
|
|
+ name: string;
|
|
|
+ // 建设项目下分享的工程
|
|
|
+ children: IReceivedShareProject[];
|
|
|
+ // 来自用户名
|
|
|
+ fromUserName: string;
|
|
|
+ // 分享时间
|
|
|
+ shareDate: number;
|
|
|
+ // 分享项目来自的企业ID
|
|
|
+ enterpriseID?: string;
|
|
|
+ // 分享项目来自的企业名称
|
|
|
+ enterpriseName?: string;
|
|
|
+}
|
|
|
+
|
|
|
+// 接收到的库数据
|
|
|
+export interface IReceivedShareLib {
|
|
|
+ // 类型
|
|
|
+ type: ShareType;
|
|
|
+ // 库名称
|
|
|
+ name: string;
|
|
|
+ // 拼接成的库ID(非分享数据ID)
|
|
|
+ ID: string;
|
|
|
+ // 分享时间
|
|
|
+ shareDate: number;
|
|
|
+ // 来自用户名
|
|
|
+ fromUserName: string;
|
|
|
+ // 指定用户(名称)
|
|
|
+ toUsers?: string[];
|
|
|
+}
|
|
|
+
|
|
|
+// 根据手机号搜索出来用户信息
|
|
|
+export interface IShareSearchUser {
|
|
|
+ userID: string;
|
|
|
+ userName: string;
|
|
|
+ mobile: string;
|
|
|
+ enterpriseID?: string;
|
|
|
+ enterpriseName?: string;
|
|
|
}
|