share.ts 6.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286
  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. userID: string;
  46. enterpriseID: string;
  47. receiverID: string;
  48. receiverEnterpriseID: string;
  49. shareDate: number;
  50. updateDate: number;
  51. }
  52. export interface IShareProject extends IShareBase {
  53. projectID: string; // 项目ID
  54. constructionID: string; // 项目所属建设项目ID,涉及到一些层级,有这个字段会更方便
  55. compilationID: string;
  56. isRead?: boolean;
  57. }
  58. export interface IShareLib extends IShareBase {
  59. compilationID: string;
  60. libID: string;
  61. }
  62. export type ShareItem = IShareProject | IShareLib;
  63. // 分享历史
  64. export interface IShareHistory extends ISharePermission {
  65. ID: string; // 分享ID
  66. user: Partial<IUser>;
  67. enterpriseID?: string;
  68. enterpriseName?: string;
  69. shareType: ShareType;
  70. projectID?: string;
  71. compilationID?: string;
  72. libID?: 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. libID: string;
  84. }
  85. export interface ICreatShare {
  86. receiverID: string;
  87. receiverEnterpriseID: string; // 一个用户可能有多个企业,需要记住企业ID
  88. doc: ICreateShareProject | ICreateShareLib;
  89. type: ShareType;
  90. }
  91. export interface IUpdateShare {
  92. receiverID: string;
  93. receiverEnterpriseID: string;
  94. filter: { ID: string; projectID?: string; compilationID?: string };
  95. update: {
  96. updateDate?: number;
  97. isRead?: boolean;
  98. allowCopy?: boolean;
  99. allowCooperate?: boolean;
  100. };
  101. type: ShareType;
  102. }
  103. export interface IDelShare {
  104. receiverID: string;
  105. receiverEnterpriseID: string;
  106. filter: { ID: string; projectID?: string; compilationID?: string };
  107. type: ShareType;
  108. }
  109. export interface IBulkShare {
  110. update?: IUpdateShare[];
  111. create?: ICreatShare[];
  112. remove?: IDelShare[];
  113. }
  114. // 分享链接
  115. export interface IShareLink {
  116. // 链接ID
  117. ID: string;
  118. // 是否需要密码
  119. needPassword: boolean;
  120. // 密码
  121. password?: string;
  122. // 分享的项目ID
  123. projectID: string;
  124. // 所属建设项目ID
  125. constructionID: string;
  126. // 项目所属费用定额ID
  127. compilationID: string;
  128. // 拥有者ID
  129. ownerID: string;
  130. ownerType: EntityType;
  131. // 企业ID
  132. enterpriseID: string;
  133. // 创建链接的人ID
  134. userID: string;
  135. // 分享时间
  136. shareDate: number;
  137. }
  138. // 最近分享 条目
  139. export interface IRecentShareItem {
  140. userID: string;
  141. enterpriseID: string;
  142. recentDate: number;
  143. }
  144. // 最近分享
  145. export interface IRecentShare {
  146. userID: string;
  147. enterpriseID: string;
  148. // 个人版
  149. personVer: IRecentShareItem[];
  150. // 企业版
  151. enterpriseVer: IRecentShareItem[];
  152. // 成员协作
  153. memberCooperation: IRecentShareItem[];
  154. }
  155. // 最近分享用户
  156. export interface IRecentShareUser {
  157. userID: string;
  158. name: string;
  159. mobile: string;
  160. enterpriseID?: string;
  161. enterpriseName?: string;
  162. recentDate: number;
  163. }
  164. // 初始化分享弹窗时需要的数据
  165. export interface IPreparePopup {
  166. // 个人版已分享
  167. personHistory: IShareHistory[];
  168. // 企业版已分享
  169. enterpriseHistory: IShareHistory[];
  170. // 成员协作已分享
  171. memberCoHistory: IShareHistory[];
  172. // 个人版最近分享
  173. personRecentUsers: IRecentShareUser[];
  174. // 企业版最近分享
  175. enterpriseRecentUsers: IRecentShareUser[];
  176. // 成员协作最近分享
  177. memberCoRecentUsers: IRecentShareUser[];
  178. // 分享链接
  179. shareLink?: IShareLink;
  180. }
  181. // 检查分享链接时需要的信息
  182. export interface IShareLinkInfo {
  183. // 链接ID
  184. ID: string;
  185. // 是否需要密码
  186. needPassword: boolean;
  187. // 项目所属费用定额ID
  188. compilationID: string;
  189. // 分享的项目ID
  190. projectID: string;
  191. // 所属建设项目ID
  192. constructionID: string;
  193. // 分享的项目名称
  194. projectName: string;
  195. // 分享链接的人名
  196. creatorName: string;
  197. }
  198. // 进入分享链接项目前准备数据
  199. export interface IPrepareShareLinkProject {
  200. // 分享链接项目的费用定额数据
  201. compilation: ICompilation;
  202. // 选项信息
  203. option: IOption;
  204. // 系统设置信息
  205. systemSetting: ISystemSetting;
  206. // 报表设置信息(用户)
  207. customizeCfg: any;
  208. }
  209. // 接收到的项目数据
  210. export interface IReceivedShareProject {
  211. // 项目ID
  212. ID: string;
  213. // 项目类型
  214. type: ProjectType;
  215. // 建设项目名称
  216. name: string;
  217. // 建设项目下分享的工程
  218. children: IReceivedShareProject[];
  219. // 来自用户名
  220. fromUserName: string;
  221. // 分享时间
  222. shareDate: number;
  223. // 分享项目来自的企业ID
  224. enterpriseID?: string;
  225. // 分享项目来自的企业名称
  226. enterpriseName?: string;
  227. }
  228. // 分享库指定用户
  229. export interface IShareLibToUser {
  230. name: string;
  231. enterpriseID?: string;
  232. enterpriseName?: string;
  233. }
  234. // 接收到的库数据
  235. export interface IReceivedShareLib {
  236. // 类型
  237. type: ShareType;
  238. // 库名称
  239. name: string;
  240. // 拼接成的库ID(非分享数据ID)
  241. ID: string;
  242. // 分享时间
  243. shareDate: number;
  244. // 来自用户名
  245. fromUserName: string;
  246. // 分享项目来自的企业ID
  247. enterpriseID?: string;
  248. // 分享项目来自的企业名称
  249. enterpriseName?: string;
  250. // 指定用户(名称)
  251. toUsers?: IShareLibToUser[];
  252. }
  253. // 根据手机号搜索出来用户信息
  254. export interface IShareSearchUser {
  255. userID: string;
  256. userName: string;
  257. mobile: string;
  258. enterpriseID?: string;
  259. enterpriseName?: string;
  260. }