detail.js 15 KB

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