Kaynağa Gözat

feat(types): 企业分享

vian 4 yıl önce
ebeveyn
işleme
fbfb546289
2 değiştirilmiş dosya ile 134 ekleme ve 30 silme
  1. 8 0
      types/src/interface/enterprise.ts
  2. 126 30
      types/src/interface/share.ts

+ 8 - 0
types/src/interface/enterprise.ts

@@ -100,3 +100,11 @@ export interface ISystemLog {
   content: string;
   time: number;
 }
+
+export interface IMemberInfo {
+  userID: string;
+  userName: string;
+  mobile: string;
+  enterpriseID: string;
+  enterpriseName: string;
+}

+ 126 - 30
types/src/interface/share.ts

@@ -1,13 +1,24 @@
 import { IOption } from './option';
 import { ICompilation } from './compilation';
-import { IRecentUser, IUser } from './user';
+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',
 }
 
 // 分享权限
@@ -16,50 +27,82 @@ export interface ISharePermission {
   allowCooperate: boolean;
 }
 
-export interface IShareProject extends ISharePermission {
+/* export interface IShare {
+  ID: 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;
+  updateDate: number;
+}
+
+export interface IShareProject extends IShareBase {
   projectID: string; // 项目ID
   constructionID: string; // 项目所属建设项目ID,涉及到一些层级,有这个字段会更方便
   compilationID: string;
   isRead?: boolean;
 }
 
-export interface IShareLib extends ISharePermission {
-  shareDate: number;
-  updateDate?: number;
+export interface IShareLib extends IShareBase {
   compilationID: string;
 }
 
-export interface IShare {
-  ID: string;
-  owner: string;
-  receiver: string;
-  recentDate: number;
-  projectList: IShareProject[];
-  rationLibList: IShareLib[];
-  gljLibList: IShareLib[];
-  priceTemplateList: IShareLib[];
-}
-
 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;
@@ -71,13 +114,15 @@ 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[];
 }
 
@@ -96,19 +141,57 @@ export interface IShareLink {
   // 项目所属费用定额ID
   compilationID: string;
   // 拥有者ID
-  owner: string;
+  ownerID: string;
+  ownerType: EntityType;
   // 创建链接的人ID
-  creator: string;
+  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;
 }
@@ -157,6 +240,10 @@ export interface IReceivedShareProject {
   fromUserName: string;
   // 分享时间
   shareDate: number;
+  // 分享项目来自的企业ID
+  enterpriseID?: string;
+  // 分享项目来自的企业名称
+  enterpriseName?: string;
 }
 
 // 接收到的库数据
@@ -174,3 +261,12 @@ export interface IReceivedShareLib {
   // 指定用户(名称)
   toUsers?: string[];
 }
+
+// 根据手机号搜索出来用户信息
+export interface IShareSearchUser {
+  userID: string;
+  userName: string;
+  mobile: string;
+  enterpriseID?: string;
+  enterpriseName?: string;
+}