index.tsx 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155
  1. import React, { useMemo } from 'react';
  2. AuditServe;
  3. import AuditServe, { IDTYPE, TYPE } from './mapServe';
  4. import { connect } from 'umi';
  5. export { AuditServe };
  6. const CustomRect = (props: any) => {
  7. const {
  8. size = { width: 130, height: 50 },
  9. data,
  10. depUserTree,
  11. roleList,
  12. userList,
  13. } = props;
  14. const { width, height } = size;
  15. const {
  16. label,
  17. stroke,
  18. fill,
  19. fontFill,
  20. fontSize,
  21. type = 2,
  22. initiator,
  23. audits,
  24. } = data;
  25. const contentText = useMemo(() => {
  26. let text = '请选择审批人';
  27. switch (type) {
  28. case TYPE.AUDIT:
  29. text = '请选择审批人';
  30. break;
  31. case TYPE.INITIATOR:
  32. text = '所有人';
  33. break;
  34. case TYPE.COPYMAN:
  35. text = '请选择抄送人';
  36. break;
  37. }
  38. const getName: any = (id: any, data: any) => {
  39. let name = '';
  40. for (let i = 0; i < data.length; i++) {
  41. let item = data[i];
  42. if (item.id == id) {
  43. return item.title;
  44. } else if (item.children?.length > 0) {
  45. let title: any = getName(id, item.children);
  46. if (title) return title;
  47. }
  48. }
  49. return name;
  50. };
  51. if (type != TYPE.AUDIT) {
  52. if (initiator?.length > 0) {
  53. const list = initiator
  54. .map((item: any) => {
  55. return getName(item.origin, depUserTree);
  56. })
  57. .filter((item: any) => item);
  58. return list.join(',');
  59. } else {
  60. return text;
  61. }
  62. } else {
  63. if (audits?.length > 0) {
  64. switch (audits[0].type) {
  65. case IDTYPE.ROLE:
  66. return roleList.find((item: any) => item.ID == audits[0].value)
  67. ?.Name;
  68. case IDTYPE.USER:
  69. return userList.find((item: any) => item.ID == audits[0].value)
  70. ?.CName;
  71. case IDTYPE.LEADER:
  72. return '部门主管';
  73. }
  74. } else {
  75. return text;
  76. }
  77. }
  78. }, [initiator, type, audits, depUserTree, roleList]);
  79. // const type: TYPE = 0;
  80. const titleDom = () => {
  81. let color = COLOR.AUDIT;
  82. let text = label == '动作节点' ? TITLETEXT.AUDIT : label;
  83. switch (type) {
  84. case TYPE.AUDIT:
  85. color = COLOR.AUDIT;
  86. text = TITLETEXT.AUDIT;
  87. break;
  88. case TYPE.INITIATOR:
  89. color = COLOR.INITIATOR;
  90. text = TITLETEXT.INITIATOR;
  91. break;
  92. case TYPE.COPYMAN:
  93. color = COLOR.COPYMAN;
  94. text = TITLETEXT.COPYMAN;
  95. break;
  96. }
  97. return (
  98. <div
  99. style={{
  100. width: '100%',
  101. height: `${fontSize + 16}px`,
  102. paddingLeft: '6px',
  103. backgroundColor: color,
  104. color: 'white',
  105. fontSize,
  106. }}
  107. >
  108. {text}
  109. </div>
  110. );
  111. };
  112. return (
  113. <div
  114. style={{
  115. width,
  116. height,
  117. boxShadow:
  118. '0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19)',
  119. }}
  120. >
  121. {titleDom()}
  122. <div
  123. style={{
  124. paddingLeft: '6px',
  125. height: `${height - fontSize - 16}px`,
  126. lineHeight: `${height - fontSize - 16}px`,
  127. fontSize,
  128. }}
  129. >
  130. {contentText}
  131. </div>
  132. </div>
  133. );
  134. };
  135. export default connect(({ user }: any) => ({
  136. depUserTree: user.depUserTree,
  137. roleList: user.roleList,
  138. userList: user.list,
  139. }))(CustomRect);
  140. const enum COLOR {
  141. INITIATOR = '#576A95',
  142. AUDIT = '#FF943E',
  143. COPYMAN = '#3296FA',
  144. }
  145. const enum TITLETEXT {
  146. INITIATOR = '发起人',
  147. AUDIT = '审批人',
  148. COPYMAN = '抄送人',
  149. }