share.ts 6.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. import { IOption } from './option';
  2. import { ICompilation } from './compilation';
  3. import { EntityType, IUser } from './user';
  4. import { ISystemSetting, ProjectType } from '.';
  5. // 分享类型
  6. export enum ShareType {
  7. PROJECT = 'project', // 项目
  8. RATION_LIB = 'rationLib', // 定额库
  9. GLJ_LIB = 'gljLib', // 工料机库
  10. PRICE_TEMPLATE = 'priceTemplate', // 租价模板
  11. }
  12. // 分享版本
  13. export enum ShareVersion {
  14. // 个人版
  15. PERSON = 'person',
  16. // 企业版
  17. ENTERPRISE = 'enterprise',
  18. // 成员协作
  19. MEMBER_COOPERATION = 'memberCooperation',
  20. }
  21. // 分享权限
  22. export interface ISharePermission {
  23. allowCopy: boolean;
  24. allowCooperate: boolean;
  25. }
  26. /* export interface IShare {
  27. ID: string;
  28. version: ShareVersion;
  29. ownerID: string;
  30. ownerType: EntityType;
  31. // 负责人ID
  32. managerID: string;
  33. receiverID: string;
  34. receiverEnterpriseID?: string;
  35. recentDate: number;
  36. projectList: IShareProject[];
  37. rationLibList: IShareLib[];
  38. gljLibList: IShareLib[];
  39. priceTemplateList: IShareLib[];
  40. } */
  41. export interface IShareBase extends ISharePermission {
  42. ID: string;
  43. version: ShareVersion;
  44. type: ShareType;
  45. ownerID: string;
  46. ownerType: EntityType;
  47. userID: string;
  48. enterpriseID: string;
  49. receiverID: string;
  50. receiverEnterpriseID: string;
  51. shareDate: number;
  52. updateDate: number;
  53. }
  54. export interface IShareProject extends IShareBase {
  55. projectID: string; // 项目ID
  56. constructionID: string; // 项目所属建设项目ID,涉及到一些层级,有这个字段会更方便
  57. compilationID: string;
  58. isRead?: boolean;
  59. }
  60. export interface IShareLib extends IShareBase {
  61. compilationID: string;
  62. }
  63. export type ShareItem = IShareProject | IShareLib;
  64. // 分享历史
  65. export interface IShareHistory extends ISharePermission {
  66. ID: string; // 分享ID
  67. user: Partial<IUser>;
  68. enterpriseID?: string;
  69. enterpriseName?: string;
  70. shareType: ShareType;
  71. projectID?: string;
  72. compilationID?: string;
  73. }
  74. export interface ICreateShareProject extends ISharePermission {
  75. ID: string;
  76. projectID: string; // 项目ID
  77. constructionID: string; // 项目所属建设项目ID,涉及到一些层级,有这个字段会更方便
  78. compilationID: string;
  79. }
  80. export interface ICreateShareLib extends ISharePermission {
  81. ID: string;
  82. compilationID: string;
  83. }
  84. export interface ICreatShare {
  85. receiverID: string;
  86. receiverEnterpriseID: string; // 一个用户可能有多个企业,需要记住企业ID
  87. doc: ICreateShareProject | ICreateShareLib;
  88. type: ShareType;
  89. }
  90. export interface IUpdateShare {
  91. receiverID: string;
  92. receiverEnterpriseID: string;
  93. filter: { ID: string; projectID?: string; compilationID?: string };
  94. update: {
  95. updateDate?: number;
  96. isRead?: boolean;
  97. allowCopy?: boolean;
  98. allowCooperate?: boolean;
  99. };
  100. type: ShareType;
  101. }
  102. export interface IDelShare {
  103. receiverID: string;
  104. receiverEnterpriseID: string;
  105. filter: { ID: string; projectID?: string; compilationID?: string };
  106. type: ShareType;
  107. }
  108. export interface IBulkShare {
  109. update?: IUpdateShare[];
  110. create?: ICreatShare[];
  111. remove?: IDelShare[];
  112. }
  113. // 分享链接
  114. export interface IShareLink {
  115. // 链接ID
  116. ID: string;
  117. // 是否需要密码
  118. needPassword: boolean;
  119. // 密码
  120. password?: string;
  121. // 分享的项目ID
  122. projectID: string;
  123. // 所属建设项目ID
  124. constructionID: string;
  125. // 项目所属费用定额ID
  126. compilationID: string;
  127. // 拥有者ID
  128. ownerID: string;
  129. ownerType: EntityType;
  130. // 创建链接的人ID
  131. creatorID: string;
  132. // 分享时间
  133. shareDate: number;
  134. }
  135. // 最近分享 条目
  136. export interface IRecentShareItem {
  137. userID: string;
  138. enterpriseID: string;
  139. recentDate: number;
  140. }
  141. // 最近分享
  142. export interface IRecentShare {
  143. userID: string;
  144. enterpriseID: string;
  145. // 个人版
  146. personVer: IRecentShareItem[];
  147. // 企业版
  148. enterpriseVer: IRecentShareItem[];
  149. // 成员协作
  150. memberCooperation: IRecentShareItem[];
  151. }
  152. // 最近分享用户
  153. export interface IRecentShareUser {
  154. userID: string;
  155. name: string;
  156. mobile: string;
  157. enterpriseID?: string;
  158. enterpriseName?: string;
  159. recentDate: number;
  160. }
  161. // 初始化分享弹窗时需要的数据
  162. export interface IPreparePopup {
  163. // 个人版已分享
  164. personHistory: IShareHistory[];
  165. // 企业版已分享
  166. enterpriseHistory: IShareHistory[];
  167. // 成员协作已分享
  168. memberCoHistory: IShareHistory[];
  169. // 个人版最近分享
  170. personRecentUsers: IRecentShareUser[];
  171. // 企业版最近分享
  172. enterpriseRecentUsers: IRecentShareUser[];
  173. // 成员协作最近分享
  174. memberCoRecentUsers: IRecentShareUser[];
  175. // 分享链接
  176. shareLink?: IShareLink;
  177. }
  178. // 检查分享链接时需要的信息
  179. export interface IShareLinkInfo {
  180. // 链接ID
  181. ID: string;
  182. // 是否需要密码
  183. needPassword: boolean;
  184. // 项目所属费用定额ID
  185. compilationID: string;
  186. // 分享的项目ID
  187. projectID: string;
  188. // 所属建设项目ID
  189. constructionID: string;
  190. // 分享的项目名称
  191. projectName: string;
  192. // 分享链接的人名
  193. creatorName: string;
  194. }
  195. // 进入分享链接项目前准备数据
  196. export interface IPrepareShareLinkProject {
  197. // 分享链接项目的费用定额数据
  198. compilation: ICompilation;
  199. // 选项信息
  200. option: IOption;
  201. // 系统设置信息
  202. systemSetting: ISystemSetting;
  203. // 报表设置信息(用户)
  204. customizeCfg: any;
  205. }
  206. // 接收到的项目数据
  207. export interface IReceivedShareProject {
  208. // 项目ID
  209. ID: string;
  210. // 项目类型
  211. type: ProjectType;
  212. // 建设项目名称
  213. name: string;
  214. // 建设项目下分享的工程
  215. children: IReceivedShareProject[];
  216. // 来自用户名
  217. fromUserName: string;
  218. // 分享时间
  219. shareDate: number;
  220. // 分享项目来自的企业ID
  221. enterpriseID?: string;
  222. // 分享项目来自的企业名称
  223. enterpriseName?: string;
  224. }
  225. // 接收到的库数据
  226. export interface IReceivedShareLib {
  227. // 类型
  228. type: ShareType;
  229. // 库名称
  230. name: string;
  231. // 拼接成的库ID(非分享数据ID)
  232. ID: string;
  233. // 分享时间
  234. shareDate: number;
  235. // 来自用户名
  236. fromUserName: string;
  237. // 指定用户(名称)
  238. toUsers?: string[];
  239. }
  240. // 根据手机号搜索出来用户信息
  241. export interface IShareSearchUser {
  242. userID: string;
  243. userName: string;
  244. mobile: string;
  245. enterpriseID?: string;
  246. enterpriseName?: string;
  247. }