project.ts 9.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383
  1. import { EntityType } from './user';
  2. import { ValuationType } from './compilation';
  3. import { IIncreaseSetting } from './increaseFee';
  4. import { ITreeScm, DeleteEnum, INumFileRef, IColumnMeta } from './base';
  5. import { ICalcOption, ITenderSetting, IDistributeSetting } from './calculation';
  6. import { ISharePermission } from './share';
  7. // 项目类型
  8. export enum ProjectType {
  9. FOLDER = 1,
  10. CONSTRUCTION, // 建设项目
  11. SINGLE, // 单项工程
  12. UNIT, // 单位工程
  13. }
  14. export const projectTextMap = {
  15. [ProjectType.FOLDER]: '文件夹',
  16. [ProjectType.CONSTRUCTION]: '建设项目',
  17. [ProjectType.SINGLE]: '单项工程',
  18. [ProjectType.UNIT]: '单位工程',
  19. };
  20. export interface IGLJCol {
  21. showAdjustPrice?: boolean;
  22. }
  23. // 小数位数
  24. export interface IDecimal {
  25. bill: { unitPrice: number; totalPrice: number };
  26. ration: { quantity: number; unitPrice: number; totalPrice: number };
  27. glj: { quantity: number; unitPriceHasMix: number; unitPrice: number };
  28. feeRate: number;
  29. quantityDetail: number;
  30. material: number; // 三材系数
  31. process: number;
  32. }
  33. // 工程量精度
  34. export interface IBillsQuantityDecimal {
  35. unit: string;
  36. decimal: number;
  37. ID: string;
  38. }
  39. // 呈现选项
  40. export interface IDisplaySetting {
  41. billsAutoHeight: boolean;
  42. rationAutoHeight: boolean;
  43. disPlayMainMaterial: boolean;
  44. }
  45. // 累进区间
  46. export interface IProgression {
  47. interval: string; // 区间字符 eg: '(0,100]'
  48. feeRate: boolean;
  49. }
  50. export interface IProgressiveInterval {
  51. ID: string;
  52. name: string;
  53. progression: IProgression[];
  54. generalRate?: number;
  55. simpleRate?: number;
  56. }
  57. // 超高降效
  58. export interface IOverHeight {
  59. name: string;
  60. code?: string;
  61. unit?: string;
  62. labourRate?: number;
  63. machineRate?: number;
  64. labourMachineRate?: number;
  65. benchmark?: number;
  66. extra?: number;
  67. limit?: number;
  68. }
  69. export enum OverHeightOption {
  70. SEPARATION = 1, // 对应清单或分部下(默认)
  71. MEASURE, // 指定措施清单011704001
  72. SPECIFIC, // 指定具体位置,显示分部分项以及措施项目的树结构显示叶子清单(分项)供勾选
  73. }
  74. // 承包人材料调整类型
  75. export enum GLJAdjustType {
  76. PRICE_INFO = 'priceInfo', // 造价信息差额调整法
  77. PRICE_COE = 'priceCoe', // 价格指数调整法
  78. }
  79. // 计税方式
  80. export enum TaxType {
  81. GENERAL = 1,
  82. SIMPLE,
  83. }
  84. // 文件类型
  85. export enum FileType {
  86. SUBMISSION = 1, // 投标
  87. INVITATION, // 招标
  88. CONTROL, // 控制价
  89. SETTLEMENT, // 结算
  90. }
  91. export enum FileTypeName {
  92. SUBMISSION = '投标',
  93. INVITATION = '招标',
  94. CONTROL = '控制价',
  95. SETTLEMENT = '结算',
  96. }
  97. export const FileTypeMap = {
  98. [FileType.SUBMISSION]: FileTypeName.SUBMISSION,
  99. [FileType.INVITATION]: FileTypeName.INVITATION,
  100. [FileType.CONTROL]: FileTypeName.CONTROL,
  101. };
  102. // 工程特征、基本信息
  103. export interface IInfoItem {
  104. ID: string;
  105. key: string;
  106. dispName: string;
  107. value?: string;
  108. required?: string;
  109. readonly?: string;
  110. options?: string;
  111. cellType?: string;
  112. fileKind?: FileTypeName;
  113. items?: IInfoItem[];
  114. }
  115. // 基本信息类型
  116. export interface IBasicInfo extends IInfoItem {
  117. ID: string;
  118. parentID: string;
  119. seq: number;
  120. }
  121. // 工程特征指标
  122. interface IBaseEngineerFeature {
  123. value: string;
  124. name: string;
  125. exportName?: string;
  126. cellType?: string;
  127. options?: string;
  128. }
  129. export interface IStdEngineerFeature extends IBaseEngineerFeature {
  130. ID: number;
  131. ParentID: number;
  132. }
  133. export interface IEngineerFeature extends ITreeScm, IBaseEngineerFeature {}
  134. // 主要工料指标
  135. export interface IMaterialIndex {
  136. ID: string;
  137. name: string;
  138. unit: string;
  139. coe: number;
  140. }
  141. // 主要工程量指标
  142. export interface IMainQtyIndex {
  143. ID: string;
  144. name: string;
  145. unit: string;
  146. coe: number;
  147. }
  148. // 主要经济指标
  149. export interface IEconomicIndex {
  150. ID: string;
  151. name: string;
  152. value: string;
  153. }
  154. // 面积增加类型
  155. export enum AreaIncreaseType {
  156. LABOUR = 'labour',
  157. MATERIAL = 'material',
  158. MACHINE = 'machine',
  159. }
  160. export interface IAreaIncreaseSetting {
  161. [AreaIncreaseType.LABOUR]: number;
  162. [AreaIncreaseType.MATERIAL]: number;
  163. [AreaIncreaseType.MACHINE]: number;
  164. }
  165. // 关于计算取费方式
  166. export enum BillGetFeeType {
  167. RATION_CONTENT = 0,
  168. RATION_PRICE_CONVERSE = 1,
  169. RATION_PRICE = 2,
  170. BILL_PRICE = 3,
  171. }
  172. // 项目属性
  173. export interface IProperty {
  174. constructionID?: string; // 建设项目ID
  175. valuationType?: ValuationType; // 计价类型
  176. valuationID?: string; // 计价规则
  177. engineeringID?: string; // 工程专业ID
  178. fileType?: FileType; // 文件类型
  179. taxType?: TaxType; // 计税方式
  180. rationFeeType?: number; // 定额取费专业
  181. unitFeeType?: number; // 单位工程取费专业
  182. calcProgramLib?: INumFileRef; // 计算程序(标准)
  183. region?: string;
  184. showAdjustPrice?: boolean; // 是否显示调整价列
  185. isInstall?: boolean; // 是否是安装工程
  186. isItemIncrease?: boolean; // 是否是子目增加
  187. itemIncreaseSetting?: IIncreaseSetting;
  188. isAreaIncrease?: boolean; // 是否是面积增加
  189. areaIncreaseSetting?: IAreaIncreaseSetting; // 面积增加费设置
  190. indexName?: string; // 指标名称
  191. lockBills?: boolean; // 锁定清单
  192. decimal?: IDecimal; // 小数位数
  193. billsQuantityDecimal?: IBillsQuantityDecimal[]; // 清单工程量精度
  194. displaySetting?: IDisplaySetting; // 呈现选项
  195. billsCalcMode?: BillGetFeeType; // 清单计费取费方式
  196. zanguCalcMode?: number; // 暂估合价计算方式
  197. calcOption?: ICalcOption; // 计算选项
  198. tenderSetting?: ITenderSetting; // 调价设置
  199. overHeight?: IOverHeight[]; // 超高降效数据
  200. overHeightOption?: OverHeightOption; // 超高降效选项
  201. basicInfo?: IBasicInfo[]; // 基本信息
  202. feature?: IInfoItem[]; // 工程特征
  203. progressiveInterval?: IProgressiveInterval[]; // 累进区间
  204. gljAdjustType?: GLJAdjustType; // 承包人材料调整类型
  205. cptIllustration?: string; // 编制说明
  206. engineerInfos?: IInfoItem[];
  207. engineerFeatures?: IEngineerFeature[];
  208. materials?: IMaterialIndex[];
  209. mainQuantities?: IMainQtyIndex[];
  210. economics?: IEconomicIndex[];
  211. overHeightSpecificID?: string; // 超高子目指定清单ID
  212. distributeSetting?: IDistributeSetting; // 强制修改叶子清单的综合单价,分摊计算定额工程量 或 分摊计算定额下的工料机消耗量。
  213. colMetas?: IColumnMeta[];
  214. valuationName?: string; // 计价规则名称
  215. maxLimitPriceRate?: number; // 设置最高限价单价浮动率
  216. minLimitPriceRate?: number; // 设置最低限价单价浮动率
  217. }
  218. // 原来的列设置太复杂了,没什么必要
  219. export interface IMainTreeCol {
  220. cols: Array<any>;
  221. headRowHeight: Array<number>;
  222. treeCol?: number;
  223. headRows?: number;
  224. emptyRows?: number;
  225. }
  226. export enum ImportType {
  227. NONE,
  228. YBP,
  229. INTERFACE,
  230. }
  231. // 项目活动枚举
  232. export enum ProjectActivity {
  233. // 新建
  234. CREATE = 'create',
  235. // 编辑
  236. EDIT = 'edit',
  237. // 删除
  238. DELETE = 'delete',
  239. // 恢复
  240. RECOVER = 'recover',
  241. }
  242. export interface IProject extends ITreeScm {
  243. type: ProjectType;
  244. compilationID: string;
  245. ownerID: string; // 拥有者ID(个人或企业)
  246. ownerType: EntityType;
  247. managerID: string; // 负责人ID
  248. creator: string;
  249. name: string;
  250. updateDate: number; // 更新时间
  251. code?: string;
  252. createDate: number;
  253. property?: IProperty;
  254. changeMark?: string;
  255. remark?: string;
  256. fileVer?: string;
  257. lastFileVer?: string;
  258. imported?: ImportType;
  259. deleteType?: DeleteEnum;
  260. deleteDate?: number;
  261. deleteBy?: string;
  262. // 只是为了显示,不是自身的正在数据,比如汇总信息等
  263. external?: {
  264. showShareMark?: boolean; // 是否显示分享标记
  265. cost?: number; // 工程造价
  266. // 有时候为了显示,需要一些特殊处理日期。如:项目管理-回收站,建设项目、单项工程的删除日期和创建日期需要显示为空
  267. deleteDateForView?: number;
  268. createDateForView?: number;
  269. actualTreeData?: ITreeScm; // 真正的树结构数据。有时候可能需要暂时变更project的树结构数据,在这种时候需要存储原本的真实树结构数据
  270. from?: string; // 来自于某用户名称
  271. members?: string[]; // 成员协作
  272. };
  273. }
  274. export interface IProjectBulkRst {
  275. create: IProject[];
  276. remove: string[];
  277. }
  278. // 建设项目默认设置项(可以被恢复的)
  279. export interface IConstructionDefaultSetting {
  280. decimal: IProperty['decimal'];
  281. billsQuantityDecimal: IProperty['billsQuantityDecimal'];
  282. displaySetting: IProperty['displaySetting'];
  283. billsCalcMode: IProperty['billsCalcMode'];
  284. zanguCalcMode: IProperty['zanguCalcMode'];
  285. calcOption: IProperty['calcOption'];
  286. colMetas: IProperty['colMetas'];
  287. }
  288. // 项目权限
  289. export interface IProjectPermission {
  290. projectID: string;
  291. readOnly: boolean;
  292. allowCopy: boolean;
  293. }
  294. // constructionTreeData接口
  295. export interface IConstructionTreeData {
  296. construction: { project: IProject };
  297. treeData: IProject[];
  298. }
  299. // 项目活动
  300. export interface IProjectActivity {
  301. activity: ProjectActivity;
  302. userID: string;
  303. date: number;
  304. }
  305. // 项目log
  306. export interface IProjectLog {
  307. // 企业ID
  308. enterpriseID: string;
  309. // 费用定额ID
  310. compilationID: string;
  311. // 费用定额名称
  312. compilationName: string;
  313. // 建设项目ID
  314. constructionID: string;
  315. // 建设项目名称
  316. constructionName: string;
  317. // 单位工程ID
  318. unitID: string;
  319. // 单位工程名称
  320. unitName: string;
  321. // 更新时间
  322. updateDate: number;
  323. // 管理者(所有者、负责人)ID
  324. managerID: string;
  325. // 活动
  326. activity: ProjectActivity;
  327. // 活动时间
  328. activityDate: number;
  329. // 活动者ID
  330. activityUserID: string;
  331. // 协作
  332. cooperationCount?: number;
  333. }
  334. // 导入状态
  335. export enum ImportStatus {
  336. IMPORTING = 0,
  337. FINISH = 1,
  338. FAIL = 3,
  339. }
  340. // 导入log
  341. export interface IImportLog {
  342. status: ImportStatus;
  343. errorMsg: string;
  344. stack?: any;
  345. }