detail.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609
  1. import {
  2. queryFlowInfo,
  3. // commitSheet,
  4. querySheet,
  5. queryHistory,
  6. // queryHistoryDetail,
  7. queryComment,
  8. addComment,
  9. createExcel,
  10. queryExcel,
  11. updateFlowInfo,
  12. submitAudit,
  13. // approve,
  14. queryFiles,
  15. deleteFiles,
  16. } from '@/services/PurchaseList';
  17. import {
  18. queryAuditList,
  19. queryVersionsList,
  20. queryProjectRecord,
  21. queryRecord,
  22. commitSheet,
  23. queryDetail,
  24. queryHistoryList,
  25. queryHistoryDetail,
  26. submitNextNode,
  27. advanceSubmitNextNode,
  28. addBomComment,
  29. queryBomComment,
  30. approve,
  31. queryAuthority,
  32. queryVersionsTree,
  33. queryAuditExcel,
  34. queryAuditRecord,
  35. queryDingSchema,
  36. queryDingInstanceDetail,
  37. queryListParentByUser,
  38. queryClassify,
  39. queryBindClassify,
  40. } from '@/services/boom';
  41. import { queryRole } from '@/services/SysAdmin';
  42. import { setCurrentUser } from '@/utils/authority';
  43. import { queryProjectMenu } from '@/services/SysAdmin';
  44. import { storeToken } from '@/utils/utils';
  45. import { routerRedux } from 'dva/router';
  46. import { message } from 'antd';
  47. export default {
  48. namespace: 'detail',
  49. state: {
  50. template: {},
  51. versionList: [],
  52. historyList: [],
  53. auditList: [],
  54. flow: {
  55. active: 0,
  56. currentNode: {},
  57. list: {
  58. FlowNodes: [],
  59. },
  60. },
  61. history: {
  62. list: [],
  63. pagination: false,
  64. },
  65. project: {
  66. list: [],
  67. pagination: false,
  68. },
  69. excel: {
  70. list: [],
  71. pagination: false,
  72. },
  73. comment: { list: [] },
  74. bomComment: { list: [] },
  75. fileList: [],
  76. roleList: [],
  77. authority: [],
  78. versionTree: [],
  79. auditExcel: [],
  80. dingInstanceD: [],
  81. typeOptions: [],
  82. classifyList:[],
  83. },
  84. effects: {
  85. *queryAuthority({ payload, callback }, { call, put }) {
  86. const response = yield call(queryAuthority, payload);
  87. if (response) {
  88. yield put({
  89. type: 'save',
  90. payload: { authority: response.data },
  91. });
  92. }
  93. },
  94. *queryProjectRecord({ payload, callback }, { call, put }) {
  95. const response = yield call(queryProjectRecord, payload);
  96. if (response) {
  97. console.log(response);
  98. const flow = response.data.list[0];
  99. if (flow) {
  100. let { template_id, template_node_id } = flow;
  101. yield put({
  102. type: 'save',
  103. payload: { template: flow },
  104. });
  105. yield put({
  106. type: 'queryVersionsList',
  107. payload: {
  108. ...payload,
  109. // template_id,
  110. // template_node_id,
  111. },
  112. callback,
  113. });
  114. }
  115. // yield put({
  116. // type: 'save',
  117. // payload: { flow: flow },
  118. // });
  119. }
  120. },
  121. *queryVersionsList({ payload, callback }, { call, put }) {
  122. const response = yield call(queryVersionsList, payload);
  123. if (response) {
  124. callback && callback(response.data);
  125. yield put({
  126. type: 'save',
  127. payload: {
  128. versionList: response.data,
  129. },
  130. });
  131. }
  132. },
  133. *queryAuditList({ payload }, { call, put }) {
  134. const response = yield call(queryAuditList, payload);
  135. if (response) {
  136. console.log(response);
  137. yield put({
  138. type: 'save',
  139. payload: { auditList: response.data || [] },
  140. });
  141. }
  142. },
  143. // 查询子清单详情
  144. *queryRecord({ payload, callback }, { call, put }) {
  145. const response = yield call(queryRecord, payload);
  146. if (response && response.data) {
  147. let sheet = response.data;
  148. sheet.data = JSON.parse(sheet.data || '[]');
  149. sheet.data.forEach(item => {
  150. item.config = JSON.parse(item.config || '{}');
  151. item.celldata = JSON.parse(item.cell_data || '[]');
  152. delete item.cell_data;
  153. });
  154. callback && callback(sheet);
  155. } else {
  156. yield put({
  157. type: 'queryDetail',
  158. payload: {
  159. excel_id: payload.version_id,
  160. },
  161. callback,
  162. });
  163. }
  164. },
  165. *commitSheet({ payload, callback }, { call, put }) {
  166. let response = yield call(commitSheet, payload);
  167. if (response) {
  168. message.success('提交成功');
  169. yield put({
  170. type: 'queryVersionsList',
  171. payload: {
  172. project_id: payload.project_id,
  173. // template_id: payload.template_id,
  174. // template_node_id: payload.template_node_id,
  175. },
  176. callback: versionList => {
  177. let newVersion = versionList.find(item => item.id == response.data.id);
  178. callback && callback(newVersion);
  179. },
  180. });
  181. }
  182. },
  183. *saveSheet({ payload }, { call }) {
  184. yield call(commitSheet, payload);
  185. },
  186. *queryBomComment({ payload }, { call, put }) {
  187. const response = yield call(queryBomComment, payload);
  188. if (response) {
  189. yield put({
  190. type: 'save',
  191. payload: { bomComment: response.data },
  192. });
  193. }
  194. },
  195. *addBomComment({ payload, callback }, { call, put }) {
  196. try {
  197. const response = yield call(addBomComment, payload);
  198. if (response) {
  199. yield put({
  200. type: 'queryBomComment',
  201. payload: {
  202. excel_id: payload.excel_id,
  203. },
  204. });
  205. message.success('评论成功');
  206. callback && callback();
  207. }
  208. } catch (error) {
  209. console.log(error);
  210. }
  211. },
  212. // 提交流转
  213. *submitNextNode({ payload, callback }, { call, put }) {
  214. let response = yield call(submitNextNode, payload);
  215. if (response) {
  216. message.success('提交成功');
  217. yield put({
  218. type: 'queryVersionsList',
  219. payload: {
  220. project_id: payload.project_id,
  221. },
  222. callback: () => {
  223. callback(response.data);
  224. },
  225. });
  226. }
  227. },
  228. // 实时计算审批人
  229. *advanceSubmitNextNode({ payload, callback }, { call, put }) {
  230. let response = yield call(advanceSubmitNextNode, payload);
  231. if (response) {
  232. console.log(response);
  233. callback?.(response.data);
  234. // message.success('提交成功');
  235. // yield put({
  236. // type: 'queryVersionsList',
  237. // payload: {
  238. // project_id: payload.project_id,
  239. // },
  240. // callback: () => {
  241. // callback(response.data);
  242. // },
  243. // });
  244. }
  245. },
  246. *queryDetail({ payload, callback }, { call, put }) {
  247. const sheet = yield call(queryDetail, payload);
  248. if (sheet) {
  249. callback?.(sheet);
  250. }
  251. },
  252. *queryHistoryList({ payload, callback }, { call, put, select }) {
  253. const response = yield call(queryHistoryList, {
  254. ...payload,
  255. pageSize: 9999,
  256. });
  257. if (response) {
  258. console.log(response);
  259. yield put({
  260. type: 'saveHistory',
  261. payload: {
  262. [payload.version_id]: response.data.list,
  263. },
  264. });
  265. }
  266. },
  267. // 审批
  268. *approve({ payload, callback }, { call, put }) {
  269. try {
  270. const response = yield call(approve, payload);
  271. if (response) {
  272. message.success('操作成功');
  273. yield put({
  274. type: 'queryVersionsList',
  275. payload: {
  276. project_id: payload.project_id,
  277. },
  278. callback: () => {
  279. callback(response.data);
  280. },
  281. });
  282. }
  283. } catch (error) {
  284. console.error(error);
  285. }
  286. },
  287. // =================================================================================================================================
  288. *queryFlowInfo({ payload, callback }, { call, put }) {
  289. const response = yield call(queryFlowInfo, payload);
  290. if (response) {
  291. var flow = response.data[0];
  292. flow.current = flow.list.FlowNodes.findIndex(item => item.id == flow.active);
  293. flow.currentNode = flow.list.FlowNodes[flow.current];
  294. yield put({
  295. type: 'save',
  296. payload: { flow: flow },
  297. });
  298. // 查询当前节点的最新sheet信息
  299. yield put({
  300. type: 'querySheet',
  301. payload: {
  302. project_id: payload.projectId,
  303. flow_id: flow.currentNode.flow_id,
  304. node_id: flow.currentNode.id,
  305. },
  306. callback: sheets => {
  307. callback && callback(flow, sheets);
  308. },
  309. });
  310. }
  311. },
  312. *queryFlowInfoList({ payload, callback }, { call, put }) {
  313. const response = yield call(queryFlowInfo, payload);
  314. if (response) {
  315. var flow = response.data[0];
  316. flow.current = flow.list.FlowNodes.findIndex(item => item.id == flow.active);
  317. flow.currentNode = flow.list.FlowNodes[flow.current];
  318. yield put({
  319. type: 'save',
  320. payload: { flow: flow },
  321. });
  322. callback && callback();
  323. }
  324. },
  325. *updateFlowInfo({ payload }, { call, put }) {
  326. const response = yield call(updateFlowInfo, payload);
  327. if (response) {
  328. message.success('修改成功');
  329. yield put({
  330. type: 'queryFlowInfoList',
  331. payload: {
  332. projectId: payload.projectId,
  333. },
  334. });
  335. }
  336. },
  337. // *queryHistory({ payload, callback }, { call, put }) {
  338. // payload.pageSize = '9999';
  339. // const response = yield call(queryHistory, payload);
  340. // if (response) {
  341. // yield put({
  342. // type: 'save',
  343. // payload: { history: response.data },
  344. // });
  345. // callback(response.data);
  346. // }
  347. // },
  348. *submitAudit({ payload, callback }, { call, put }) {
  349. const response = yield call(submitAudit, payload);
  350. if (response) {
  351. message.success('提交审核成功');
  352. yield put({
  353. type: 'queryHistory',
  354. payload: {
  355. projectId: payload.projectId,
  356. excel_id: payload.id,
  357. },
  358. });
  359. yield put({
  360. type: 'queryFlowInfo',
  361. payload: {
  362. projectId: payload.projectId,
  363. },
  364. });
  365. }
  366. },
  367. // *approve({ payload, callback }, { call, put }) {
  368. // try {
  369. // const response = yield call(approve, payload);
  370. // if (response) {
  371. // message.success('操作成功');
  372. // yield put({
  373. // type: 'queryHistory',
  374. // payload: {
  375. // projectId: payload.projectId,
  376. // excel_id: payload.id,
  377. // },
  378. // });
  379. // yield put({
  380. // type: 'queryFlowInfo',
  381. // payload: {
  382. // projectId: payload.project_id,
  383. // },
  384. // callback,
  385. // });
  386. // }
  387. // } catch (error) {
  388. // console.error(error);
  389. // }
  390. // },
  391. *queryHistoryDetail({ payload, callback }, { call, put }) {
  392. const response = yield call(queryHistoryDetail, payload);
  393. if (response) {
  394. let sheets = response.data;
  395. sheets.forEach(item => {
  396. item.config = JSON.parse(item.config) || {};
  397. item.celldata = JSON.parse(item.cell_data) || [];
  398. delete item.cell_data;
  399. });
  400. callback && callback(sheets);
  401. }
  402. },
  403. *queryComment({ payload }, { call, put }) {
  404. const response = yield call(queryComment, payload);
  405. if (response) {
  406. yield put({
  407. type: 'save',
  408. payload: { comment: response.data },
  409. });
  410. }
  411. },
  412. *addComment({ payload, callback }, { call, put }) {
  413. const response = yield call(addComment, payload);
  414. if (response) {
  415. yield put({
  416. type: 'queryComment',
  417. payload,
  418. });
  419. message.success('评论成功');
  420. callback && callback();
  421. }
  422. },
  423. *createExcel({ payload, callback }, { call, put }) {
  424. const response = yield call(createExcel, payload);
  425. if (response) {
  426. yield put({
  427. type: 'queryExcel',
  428. });
  429. message.success('创建成功');
  430. callback && callback();
  431. }
  432. },
  433. *queryExcel({ payload }, { call, put }) {
  434. const response = yield call(queryExcel, payload);
  435. if (response) {
  436. yield put({
  437. type: 'save',
  438. payload: { excel: response.data },
  439. });
  440. }
  441. },
  442. // *commitSheet({ payload, callback }, { call, put }) {
  443. // const response = yield call(commitSheet, payload);
  444. // if (response) {
  445. // const res = yield call(queryHistory, {
  446. // excel_id: payload.id,
  447. // project_id: payload.project_id,
  448. // });
  449. // yield put({
  450. // type: 'save',
  451. // payload: { history: res.data },
  452. // });
  453. // const lastCommit = res.data.list[0];
  454. // message.success('提交成功');
  455. // yield put({
  456. // type: 'queryHistoryDetail',
  457. // payload: {
  458. // excel_id: lastCommit.excel_id,
  459. // history_id: lastCommit.id,
  460. // },
  461. // callback: sheets => {
  462. // lastCommit.data = sheets;
  463. // lastCommit.name = lastCommit.version_name;
  464. // callback(lastCommit);
  465. // },
  466. // });
  467. // }
  468. // },
  469. *querySheet({ payload, callback }, { call, put }) {
  470. const response = yield call(querySheet, payload);
  471. if (response) {
  472. let sheet = response.data;
  473. sheet.data = JSON.parse(sheet.data || '[]');
  474. sheet.data.forEach(item => {
  475. item.config = JSON.parse(item.config || '{}');
  476. item.celldata = JSON.parse(item.cell_data || '[]');
  477. delete item.cell_data;
  478. });
  479. callback && callback(sheet);
  480. }
  481. },
  482. *queryFiles({ payload }, { call, put }) {
  483. const response = yield call(queryFiles, payload);
  484. if (response) {
  485. yield put({
  486. type: 'save',
  487. payload: { fileList: response.data.list },
  488. });
  489. }
  490. },
  491. *deleteFiles({ id, callback }, { call }) {
  492. const response = yield call(deleteFiles, id);
  493. if (response) {
  494. callback && callback();
  495. }
  496. },
  497. *getPermission({ payload }, { call, put }) {
  498. const response = yield call(queryProjectMenu, payload);
  499. if (response) {
  500. console.log(response.data);
  501. // yield put({
  502. // type: 'save',
  503. // payload: { fileList: response.data.list },
  504. // });
  505. }
  506. },
  507. *getRoleList({ payload }, { call, put }) {
  508. const response = yield call(queryRole, payload);
  509. if (response) {
  510. yield put({
  511. type: 'save',
  512. payload: { roleList: response.data.list },
  513. });
  514. }
  515. },
  516. *queryVersionsTree({ payload }, { call, put }) {
  517. const response = yield call(queryVersionsTree, payload);
  518. if (response) {
  519. yield put({
  520. type: 'save',
  521. payload: { versionTree: response.data },
  522. });
  523. }
  524. },
  525. *queryAuditExcel({ payload, callback }, { call, put }) {
  526. const response = yield call(queryAuditExcel, payload);
  527. if (response) {
  528. callback && callback(response.data?.all);
  529. }
  530. },
  531. *queryAuditRecord({ payload, callback }, { call, put }) {
  532. const response = yield call(queryAuditRecord, payload);
  533. if (response) {
  534. callback && callback(response.data?.all);
  535. }
  536. },
  537. *queryDingSchema({ payload, callback }, { call, put }) {
  538. const response = yield call(queryDingSchema, payload);
  539. if (response) {
  540. callback && callback(response.data?.all);
  541. }
  542. },
  543. *queryDingInstanceDetail({ payload, callback }, { call, put }) {
  544. const response = yield call(queryDingInstanceDetail, payload);
  545. if (response) {
  546. yield put({
  547. type: 'save',
  548. payload: { dingInstanceDetail: response.data?.process_instance },
  549. });
  550. }
  551. },
  552. *queryListParentByUser({ payload, callback }, { call, put }) {
  553. const response = yield call(queryListParentByUser, payload);
  554. if (response) {
  555. yield put({
  556. type: 'save',
  557. payload: { parentDepList: response.data?.result },
  558. });
  559. }
  560. },
  561. *queryClassify ({ payload, callback }, { call, put }) {
  562. const data = yield call(queryClassify, payload);
  563. if (data) {
  564. yield put({
  565. type: 'save',
  566. payload: {
  567. typeOptions: data?.map(item=>{return {...item, label:item.name, value:item.id}}),
  568. },
  569. });
  570. }
  571. },
  572. *queryBindClassify({ payload, callback }, { call, put }) {
  573. const data = yield call(queryBindClassify, payload);
  574. if (data) {
  575. yield put({
  576. type: 'save',
  577. payload: {
  578. classifyList: data?.map(item=>{return {...item, label:item.name, value:item.id}}),
  579. },
  580. });
  581. }
  582. },
  583. },
  584. reducers: {
  585. saveHistory(state, action) {
  586. return {
  587. ...state,
  588. historyList: {
  589. ...state.historyList,
  590. ...action.payload,
  591. },
  592. };
  593. },
  594. save(state, action) {
  595. return {
  596. ...state,
  597. ...action.payload,
  598. };
  599. },
  600. },
  601. };