flow.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292
  1. import {
  2. queryAuditList,
  3. addAudit,
  4. addAuditNode,
  5. addFlow,
  6. queryBoomFlowDetail,
  7. updateNode,
  8. queryFlowList,
  9. queryDingTemplateList,
  10. saveAuditFlowInfo,
  11. queryDepV2,
  12. queryProcessFlows,
  13. queryDefaultBindClassify,
  14. } from '@/services/boom';
  15. import {
  16. queryApproval,
  17. } from '@/services/approval';
  18. import { queryRole } from '@/services/SysAdmin';
  19. import { queryProject } from '@/services/PurchaseList';
  20. import { message } from 'antd';
  21. function getDepUserTree(data) {
  22. data.title = `${data.Name}`;
  23. data.id = data.ID;
  24. data.value = data.ID;
  25. // data.selectable = false;
  26. if (!data.children) data.children = new Array();
  27. if (data.children) {
  28. data.children.forEach(item => {
  29. getDepUserTree(item);
  30. });
  31. }
  32. if (data.Users && data.Users.length !== 0) {
  33. data.Users.forEach(item => {
  34. item.title = item.CName;
  35. item.id = item.ID + '||' + data.ID;
  36. item.value = item.ID + '||' + data.ID;
  37. // item.selectable = true;
  38. item.DepId = data.ID;
  39. data.children.push(item);
  40. });
  41. }
  42. return data;
  43. }
  44. const getFlowDetail = data => {
  45. const groups = {
  46. top: {
  47. position: { name: 'top' },
  48. attrs: {
  49. circle: {
  50. r: 4,
  51. magnet: true,
  52. stroke: '#31d0c6',
  53. strokeWidth: 2,
  54. fill: '#fff',
  55. style: { visibility: 'hidden' },
  56. },
  57. },
  58. zIndex: 10,
  59. },
  60. right: {
  61. position: { name: 'right' },
  62. attrs: {
  63. circle: {
  64. r: 4,
  65. magnet: true,
  66. stroke: '#31d0c6',
  67. strokeWidth: 2,
  68. fill: '#fff',
  69. style: { visibility: 'hidden' },
  70. },
  71. },
  72. zIndex: 10,
  73. },
  74. bottom: {
  75. position: { name: 'bottom' },
  76. attrs: {
  77. circle: {
  78. r: 4,
  79. magnet: true,
  80. stroke: '#31d0c6',
  81. strokeWidth: 2,
  82. fill: '#fff',
  83. style: { visibility: 'hidden' },
  84. },
  85. },
  86. zIndex: 10,
  87. },
  88. left: {
  89. position: { name: 'left' },
  90. attrs: {
  91. circle: {
  92. r: 4,
  93. magnet: true,
  94. stroke: '#31d0c6',
  95. strokeWidth: 2,
  96. fill: '#fff',
  97. style: { visibility: 'hidden' },
  98. },
  99. },
  100. zIndex: 10,
  101. },
  102. };
  103. const attrs = {
  104. line: {
  105. stroke: '#A2B1C3',
  106. targetMarker: { name: 'block', width: 12, height: 8 },
  107. strokeDasharray: '5 5',
  108. strokeWidth: 1,
  109. },
  110. };
  111. let nodes = data.nodes.map(item => {
  112. let node = { ...item };
  113. node.ports.groups = groups;
  114. node.parentKey = '1';
  115. return node;
  116. });
  117. let edges = data.edges.map(item => {
  118. let edge = { ...item };
  119. try {
  120. edge.attrs = item.attr ? JSON.parse(item.attr) : attrs;
  121. } catch (error) {
  122. edge.attrs = attrs;
  123. }
  124. return edge;
  125. });
  126. return {
  127. ...data,
  128. nodes,
  129. edges,
  130. };
  131. };
  132. export default {
  133. namespace: 'flow',
  134. state: {
  135. flowDetail: { nodes: [], edges: [] },
  136. formData: {},
  137. auditList: [],
  138. flowList: [],
  139. projectList: [],
  140. current: {},
  141. roleList: [],
  142. templateList: [],
  143. depUserTree: [],
  144. simpleFlowDteail: '',
  145. },
  146. effects: {
  147. *addFlow({ payload, callback }, { call, put }) {
  148. const res = yield call(addFlow, payload);
  149. if (res) {
  150. message.success('添加成功');
  151. callback && callback();
  152. yield put({
  153. type: 'queryFlowList',
  154. });
  155. }
  156. },
  157. *getRoleList({ payload }, { call, put }) {
  158. const response = yield call(queryRole, payload);
  159. if (response) {
  160. yield put({
  161. type: 'save',
  162. payload: { roleList: response.data.list },
  163. });
  164. }
  165. },
  166. *queryBoomFlowDetail({ payload }, { call, put }) {
  167. const data = yield call(queryBoomFlowDetail, payload);
  168. console.log(data);
  169. yield put({
  170. type: 'save',
  171. payload: { flowDetail: data },
  172. });
  173. },
  174. *queryProject({ callback }, { call, put }) {
  175. const response = yield call(queryApproval,{pageSize: 99999});
  176. if (response) {
  177. yield put({
  178. type: 'save',
  179. payload: {
  180. projectList: response.data.list,
  181. },
  182. });
  183. }
  184. },
  185. *queryFlowList({ payload }, { call, put }) {
  186. const res = yield call(queryFlowList, payload);
  187. yield put({
  188. type: 'save',
  189. payload: { flowList: res.data },
  190. });
  191. },
  192. *updateNode({ payload, callback }, { call, put }) {
  193. const data = yield call(updateNode, payload);
  194. console.log(data);
  195. message.success('修改成功');
  196. callback && callback();
  197. },
  198. *queryAuditList({ payload }, { call, put }) {
  199. const response = yield call(queryAuditList, payload);
  200. if (response) {
  201. yield put({
  202. type: 'save',
  203. payload: { auditList: response.data },
  204. });
  205. }
  206. },
  207. *addAudit({ payload, callback }, { call, put }) {
  208. const response = yield call(addAudit, payload);
  209. if (response) {
  210. message.success('新增成功');
  211. callback && callback();
  212. yield put({
  213. type: 'queryAuditList',
  214. payload: {},
  215. });
  216. }
  217. },
  218. *addAuditNode({ payload, callback }, { call, put }) {
  219. const response = yield call(addAuditNode, payload);
  220. if (response) {
  221. message.success('操作成功');
  222. callback && callback();
  223. }
  224. },
  225. *queryDingTemplateList({ payload }, { call, put }) {
  226. const response = yield call(queryDingTemplateList, payload);
  227. if (response) {
  228. yield put({
  229. type: 'save',
  230. payload: { templateList: response.data.result },
  231. });
  232. }
  233. },
  234. *saveAuditFlowInfo({ payload, callback }, { call, put }) {
  235. const response = yield call(saveAuditFlowInfo, payload);
  236. if (response) {
  237. message.success('保存成功');
  238. callback && callback();
  239. }
  240. },
  241. *fetchDepV2({ payload, callback }, { call, put }) {
  242. const response = yield call(queryDepV2, { pageSize: 999999 });
  243. if (response) {
  244. // const depUserTree = response.data?.list;
  245. const depUserTree = response.data.list.map(item => {
  246. return getDepUserTree(item);
  247. });
  248. yield put({
  249. type: 'save',
  250. payload: { depUserTree },
  251. });
  252. }
  253. },
  254. *queryProcessFlows({ payload }, { call, put }) {
  255. const data = yield call(queryProcessFlows, payload);
  256. if (data && data.length > 0) {
  257. yield put({
  258. type: 'save',
  259. payload: {
  260. flowDetail: data[0].process_json
  261. ? getFlowDetail(JSON.parse(data[0].process_json))
  262. : { nodes: [], edges: [] },
  263. formData: data[0].form_json ? JSON.parse(data[0].form_json) : [],
  264. simpleFlowDteail: data[0].process_simple_json,
  265. },
  266. });
  267. }
  268. },
  269. *queryDefaultBindClassify({ payload }, { call, put }) {
  270. const data = yield call(queryDefaultBindClassify, payload);
  271. if (data) {
  272. }
  273. },
  274. },
  275. reducers: {
  276. save(state, action) {
  277. return {
  278. ...state,
  279. ...action.payload,
  280. };
  281. },
  282. },
  283. };