boom.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620
  1. import { request } from 'umi';
  2. import { stringify } from 'qs';
  3. export async function queryAuditList(params) {
  4. let res = await request(`/api/v1/purchase/flow/info?${stringify(params)}`);
  5. res.data = res.data.map((item) => ({
  6. ...item,
  7. list: null,
  8. ...item.list,
  9. }));
  10. return res;
  11. }
  12. export async function addAudit(data) {
  13. return request(`/api/v1/purchase/flow/info`, {
  14. method: 'POST',
  15. data,
  16. });
  17. }
  18. export async function queryAuditDetail(params) {
  19. return request(`/api/v1/oa/audit/detail`, {
  20. method: 'GET',
  21. params,
  22. });
  23. }
  24. const getFlowDetail = (data) => {
  25. const groups = {
  26. top: {
  27. position: { name: 'top' },
  28. attrs: {
  29. circle: {
  30. r: 4,
  31. magnet: true,
  32. stroke: '#31d0c6',
  33. strokeWidth: 2,
  34. fill: '#fff',
  35. style: { visibility: 'hidden' },
  36. },
  37. },
  38. zIndex: 10,
  39. },
  40. right: {
  41. position: { name: 'right' },
  42. attrs: {
  43. circle: {
  44. r: 4,
  45. magnet: true,
  46. stroke: '#31d0c6',
  47. strokeWidth: 2,
  48. fill: '#fff',
  49. style: { visibility: 'hidden' },
  50. },
  51. },
  52. zIndex: 10,
  53. },
  54. bottom: {
  55. position: { name: 'bottom' },
  56. attrs: {
  57. circle: {
  58. r: 4,
  59. magnet: true,
  60. stroke: '#31d0c6',
  61. strokeWidth: 2,
  62. fill: '#fff',
  63. style: { visibility: 'hidden' },
  64. },
  65. },
  66. zIndex: 10,
  67. },
  68. left: {
  69. position: { name: 'left' },
  70. attrs: {
  71. circle: {
  72. r: 4,
  73. magnet: true,
  74. stroke: '#31d0c6',
  75. strokeWidth: 2,
  76. fill: '#fff',
  77. style: { visibility: 'hidden' },
  78. },
  79. },
  80. zIndex: 10,
  81. },
  82. };
  83. const attrs = {
  84. line: {
  85. stroke: '#A2B1C3',
  86. targetMarker: { name: 'block', width: 12, height: 8 },
  87. strokeDasharray: '5 5',
  88. strokeWidth: 1,
  89. },
  90. };
  91. let nodes = data.nodes.map((item) => {
  92. let node = { ...item };
  93. node.ports.groups = groups;
  94. node.parentKey = '1';
  95. return node;
  96. });
  97. let edges = data.edges.map((item) => {
  98. let edge = { ...item };
  99. try {
  100. edge.attrs = item.attr ? JSON.parse(item.attr) : attrs;
  101. } catch (error) {
  102. edge.attrs = attrs;
  103. }
  104. return edge;
  105. });
  106. return {
  107. ...data,
  108. nodes,
  109. edges,
  110. };
  111. };
  112. export async function queryProcessFlows(params) {
  113. let res = await request(
  114. `/api/v1/purchase/process/get-flows?${stringify(params)}`,
  115. {
  116. method: 'GET',
  117. },
  118. );
  119. let data = res.data[0];
  120. let item = {
  121. ...data,
  122. flowDetail: data.process_json
  123. ? getFlowDetail(JSON.parse(data.process_json))
  124. : { nodes: [], edges: [] },
  125. formData: data.form_json ? JSON.parse(data.form_json) : [],
  126. simpleFlowDteail: data.process_simple_json,
  127. };
  128. return { data: item };
  129. }
  130. export async function saveAuditFlowInfo(data) {
  131. return request(`/api/v1/purchase/flow/info`, {
  132. method: 'POST',
  133. data,
  134. });
  135. }
  136. export async function queryUserListByRoleID(params) {
  137. let res = await request(
  138. `/api/v1/purchase/process/get-role-user?${stringify(params)}`,
  139. {
  140. method: 'GET',
  141. },
  142. );
  143. return res.data;
  144. }
  145. export async function queryGetBomForm(params) {
  146. let res = await request(
  147. `/api/v1/purchase/bom/get-bom-form?${stringify(params)}`,
  148. {
  149. method: 'GET',
  150. },
  151. );
  152. return res;
  153. }
  154. //获取分类列表
  155. export async function queryClassify(data) {
  156. let res = await request(`/api/v1/purchase/bom/get-classify`, {
  157. method: 'GET',
  158. params: data,
  159. });
  160. return res;
  161. }
  162. export async function queryOSSData() {
  163. return request(`/api/v1/config/chart-template-img?destDir=public/bom`);
  164. }
  165. // 提交审批
  166. export async function createAduit(data) {
  167. return request(`/api/v1/oa/submit`, {
  168. method: 'POST',
  169. data,
  170. });
  171. }
  172. // 计算审批节点
  173. export async function advanceSubmitNextNode(params) {
  174. let data = {
  175. flow_id: 0,
  176. node_level_id: 0,
  177. id: 0,
  178. project_id: 0,
  179. cur_template_node_id: 0,
  180. next_template_node_id: 0,
  181. template_node_id: null,
  182. flow_path: null,
  183. template_id: 0,
  184. cur_template_id: 0,
  185. next_template_id: 0,
  186. form_list: [JSON.stringify(params)],
  187. };
  188. return request(`/api/v1/oa/next/node/advance-submit`, {
  189. method: 'POST',
  190. data,
  191. });
  192. }
  193. // /**
  194. // project_id
  195. // version_id 大版本id
  196. // template_id
  197. // template_node_id 查询某流程和某节点下最新版本的数据记录
  198. // node_id 查询某审批流程和某审批节点下最新版本的数据记录
  199. // */
  200. // export async function queryRecord(params) {
  201. // return request(`/api/v1/purchase/record?${stringify(params)}`);
  202. // }
  203. // //删除excel中单个sheet页
  204. // export async function queryDelSheetRecord(params) {
  205. // const response = await request(`/api/v1/purchase/bom/del-purchase-excel-sheet?${stringify(params)}`);
  206. // if (response.code == 200) {
  207. // // message.success('删除成功');
  208. // }
  209. // }
  210. // // 查询全部工作流
  211. // export async function queryFlowList(params) {
  212. // return request(`/api/v1/purchase/bom/flows?${stringify(params)}`);
  213. // }
  214. // // 根据节点id查询所有version
  215. // export async function queryVserionByNode(params, signal) {
  216. // return request(`/api/v1/purchase/bom/flow/node?${stringify(params)}`, {
  217. // signal,
  218. // });
  219. // }
  220. // export async function commitSheet(params) {
  221. // return request(`/api/v1/purchase/record`, {
  222. // method: 'POST',
  223. // body: params,
  224. // });
  225. // }
  226. // export async function approve(params) {
  227. // return request(`/api/v1/purchase/audit/status`, {
  228. // method: 'POST',
  229. // body: params,
  230. // });
  231. // }
  232. // export async function queryAuthority(params) {
  233. // const depId = localStorage.depId;
  234. // return request(`/api/v1/purchase/bom/user/excel/col?depId=${depId}`, {
  235. // method: 'POST',
  236. // body: params,
  237. // });
  238. // }
  239. // export async function addBomComment(params) {
  240. // return request(`/api/v1/purchase/comment`, {
  241. // method: 'POST',
  242. // body: params,
  243. // });
  244. // }
  245. // export async function queryBomComment(params) {
  246. // return request(`/api/v1/purchase/comment?${stringify(params)}`);
  247. // }
  248. // /**
  249. // * 提交流转
  250. // "id":3, 当前流转文档id,必填
  251. // "project_id":46, 所属项目id
  252. // "template_id":1, 所属模板id ,必填
  253. // "template_node_id":34,所属节点id,必填
  254. // "next_template_id":1,跳转的下级业务模板id,必填
  255. // "next_template_node_id":2,跳转的下级业务节点id,必填
  256. // "flow_id":1, 跳转的下级审核流程id , 如果不为空,则说明流转的是审核节点,下级业务节点为审核通过后进入的业务节点
  257. // "node_id":1,跳转的下级审核节点id
  258. // "desc":"流转描述"
  259. // */
  260. // export async function submitNextNode(params) {
  261. // return request(`/api/v1/purchase/next/node/submit`, {
  262. // method: 'POST',
  263. // body: params,
  264. // });
  265. // }
  266. // export async function advanceSubmitNextNode(params) {
  267. // return request(`/api/v1/purchase/next/node/advance-submit`, {
  268. // method: 'POST',
  269. // body: params,
  270. // });
  271. // }
  272. // export async function queryDetail(params) {
  273. // let response = await request(`/api/v1/purchase/record?${stringify(params)}`);
  274. // let sheet = response.data;
  275. // sheet.data = JSON.parse(sheet.data || '[]');
  276. // sheet.data.forEach(item => {
  277. // item.config = JSON.parse(item.config || '{}');
  278. // item.celldata = JSON.parse(item.cell_data || '[]');
  279. // delete item.cell_data;
  280. // });
  281. // return sheet;
  282. // }
  283. // export async function queryHistoryDetail(params) {
  284. // return request(`/api/v1/purchase/record/history/detail?${stringify(params)}`);
  285. // }
  286. // export async function queryHistoryList(params) {
  287. // return request(`/api/v1/purchase/record/history?${stringify(params)}`);
  288. // }
  289. // export async function queryBoomFlowList(params) {
  290. // return request(`/api/v1/purchase/bom/flows?${stringify(params)}`);
  291. // }
  292. // //请求历史版本
  293. // export async function queryVersionsTree(params) {
  294. // return request(`/api/v1/purchase/record/version/tree?${stringify(params)}`);
  295. // }
  296. // //查询业务节点的审核记录
  297. // export async function queryAuditExcel(params) {
  298. // return request(`/api/v1/purchase/audit/excel?${stringify(params)}`);
  299. // }
  300. // //查询审批节点的审核记录
  301. // export async function queryAuditRecord(params) {
  302. // return request(`/api/v1/purchase/audit/record?${stringify(params)}`);
  303. // }
  304. // //查询表单数据接口
  305. // export async function queryDingSchema(params) {
  306. // return request(`/api/v1/purchase/bom/ding/schema?${stringify(params)}`);
  307. // }
  308. // export async function queryDingInstanceDetail(params) {
  309. // let res = await request(`/api/v1/purchase/bom/ding/instance-detail`, {
  310. // method: 'POST',
  311. // body: params,
  312. // });
  313. // if (res.data.errcode != 0) {
  314. // message.error(res.data.errmsg);
  315. // throw new Error(res.data.errmsg);
  316. // }
  317. // return res;
  318. // }
  319. // export async function queryDingInstanceExecute(params) {
  320. // let res = await request(`/api/v1/purchase/bom/ding/instance-execute`, {
  321. // method: 'POST',
  322. // body: params,
  323. // });
  324. // if (res.data.errcode != 0) {
  325. // message.error('审批失败,请联系管理员。');
  326. // throw new Error(res.data.errmsg);
  327. // }
  328. // return res;
  329. // }
  330. // export async function queryListParentByUser(params) {
  331. // return request(`/api/v1/purchase/bom/ding/department/list-parent-by-user`, {
  332. // method: 'POST',
  333. // body: params,
  334. // });
  335. // }
  336. // /**
  337. // * 查看项目流程列表
  338. // * project_id
  339. // */
  340. // export async function queryProjectRecord(params) {
  341. // return request(`/api/v1/purchase/bom/project/record?${stringify(params)}`);
  342. // }
  343. // /** 查看版本列表
  344. // * project_id
  345. // template_id 流程id
  346. // template_node_id 流程节点id
  347. // */
  348. // export async function queryVersionsList(params) {
  349. // return request(`/api/v1/purchase/record/versions?${stringify(params)}`);
  350. // }
  351. // export async function queryBoomFlowDetail(params) {
  352. // let { data } = await request(`/api/v1/purchase/bom/flow/info?${stringify(params)}`);
  353. // const groups = {
  354. // top: {
  355. // position: { name: 'top' },
  356. // attrs: {
  357. // circle: {
  358. // r: 4,
  359. // magnet: true,
  360. // stroke: '#31d0c6',
  361. // strokeWidth: 2,
  362. // fill: '#fff',
  363. // style: { visibility: 'hidden' },
  364. // },
  365. // },
  366. // zIndex: 10,
  367. // },
  368. // right: {
  369. // position: { name: 'right' },
  370. // attrs: {
  371. // circle: {
  372. // r: 4,
  373. // magnet: true,
  374. // stroke: '#31d0c6',
  375. // strokeWidth: 2,
  376. // fill: '#fff',
  377. // style: { visibility: 'hidden' },
  378. // },
  379. // },
  380. // zIndex: 10,
  381. // },
  382. // bottom: {
  383. // position: { name: 'bottom' },
  384. // attrs: {
  385. // circle: {
  386. // r: 4,
  387. // magnet: true,
  388. // stroke: '#31d0c6',
  389. // strokeWidth: 2,
  390. // fill: '#fff',
  391. // style: { visibility: 'hidden' },
  392. // },
  393. // },
  394. // zIndex: 10,
  395. // },
  396. // left: {
  397. // position: { name: 'left' },
  398. // attrs: {
  399. // circle: {
  400. // r: 4,
  401. // magnet: true,
  402. // stroke: '#31d0c6',
  403. // strokeWidth: 2,
  404. // fill: '#fff',
  405. // style: { visibility: 'hidden' },
  406. // },
  407. // },
  408. // zIndex: 10,
  409. // },
  410. // };
  411. // const attrs = {
  412. // line: {
  413. // stroke: '#A2B1C3',
  414. // targetMarker: { name: 'block', width: 12, height: 8 },
  415. // strokeDasharray: '5 5',
  416. // strokeWidth: 1,
  417. // },
  418. // };
  419. // let nodes = data.Nodes.map(item => {
  420. // let node = {
  421. // ...item,
  422. // id: item.node_id,
  423. // renderKey: item.render_key,
  424. // zIndex: item.z_index,
  425. // isCustom: !!item.is_custom,
  426. // ports: JSON.parse(item.ports || '{}'),
  427. // };
  428. // node.ports.groups = groups;
  429. // node.parentKey = '1';
  430. // return node;
  431. // });
  432. // let edges = data.Edges.map(item => {
  433. // let edge = {
  434. // id: item.edge_id,
  435. // source: {
  436. // cell: item.source_cell,
  437. // port: item.source_port,
  438. // },
  439. // target: {
  440. // cell: item.target_cell,
  441. // port: item.target_port,
  442. // },
  443. // };
  444. // try {
  445. // edge.attrs = item.attr ? JSON.parse(item.attr) : attrs;
  446. // } catch (error) {
  447. // edge.attrs = attrs;
  448. // }
  449. // return edge;
  450. // });
  451. // return {
  452. // ...data,
  453. // nodes,
  454. // edges,
  455. // };
  456. // }
  457. // export async function updateNode(data) {
  458. // return request(`/api/v1/purchase/bom/flow/${data.templateId}/${data.nodeId}`, {
  459. // method: 'PUT',
  460. // body: data.body,
  461. // });
  462. // }
  463. // export async function addBoomFlow(data) {
  464. // return request(`/api/v1/purchase/bom/flow/info`, {
  465. // method: 'POST',
  466. // body: data,
  467. // });
  468. // }
  469. // export async function addFlow(data) {
  470. // return request(`/api/v1/purchase/bom/flow/info`, {
  471. // method: 'POST',
  472. // body: data,
  473. // });
  474. // }
  475. // /**
  476. // * [
  477. // {
  478. // "flow_id": 23,
  479. // "node": "主管",
  480. // "desc": "desc",
  481. // "auditor": 2,
  482. // "seq": 1,
  483. // "seq_relate": 0
  484. // }
  485. // ]
  486. // */
  487. // export async function addAuditNode(data) {
  488. // return request(`/api/v1/purchase/flow/info/${data.flowId}`, {
  489. // method: 'POST',
  490. // body: data.nodes,
  491. // });
  492. // }
  493. // export async function queryRecordSheet(data) {
  494. // return request(`/api/v1/purchase/record/sheet?${stringify(data)}`, {
  495. // method: 'POST',
  496. // body: data,
  497. // });
  498. // }
  499. // export async function queryDingTemplateList() {
  500. // return request(`/api/v1/purchase/bom/ding/template/list`);
  501. // }
  502. // export async function queryDDdepList(data) {
  503. // let res = await request(`/api/v1/purchase/bom/ding/department-list`, {
  504. // method: 'POST',
  505. // body: data,
  506. // });
  507. // return res.data.result;
  508. // }
  509. // export async function queryDDProcessesForecast(data) {
  510. // let res = await request(`/api/v1/purchase/bom/ding/processes-forecast`, {
  511. // method: 'POST',
  512. // body: data,
  513. // });
  514. // if (res.data.message) {
  515. // // message.error(res.data.message);
  516. // throw new Error(res.data.message);
  517. // }
  518. // return res.data.result;
  519. // }
  520. // export async function uploadFile(data) {
  521. // let res = await request(`/api/v1/purchase/bom/ding/upload-file`, {
  522. // method: 'POST',
  523. // body: data,
  524. // headers: {
  525. // ContentType: 'application/x-www-form-urlencoded',
  526. // },
  527. // });
  528. // if (!res.data.dentry) {
  529. // message.error(res.data.errmsg);
  530. // throw new Error(res.data.errmsg);
  531. // }
  532. // return res.data;
  533. // }
  534. // export async function bindDDCode(userId, code) {
  535. // let res = await request(`/api/v1/purchase/bom/ding/set-ding-user-code?ucode=${userId}:${code}`, {
  536. // method: 'GET',
  537. // });
  538. // return res.data;
  539. // }
  540. // //获取部门结构
  541. // export async function queryDepV2(params) {
  542. // return request(`/api/v2/dep?${stringify(params)}`);
  543. // }
  544. // //新增工作流时调用接口 给项目绑定默认分类列表
  545. // //purchase/bom/default-bind-classify?project_id=1
  546. // export async function queryDefaultBindClassify(params) {
  547. // let res = await request(`/api/v1/purchase/bom/default-bind-classify?${stringify(params)}`, {
  548. // method: 'GET',
  549. // });
  550. // return res.data;
  551. // }
  552. // export async function queryBindClassify(params) {
  553. // let res = await request(`/api/v1/purchase/bom/get-bind-classify?${stringify(params)}`, {
  554. // method: 'GET',
  555. // });
  556. // return res.data;
  557. // }
  558. // export async function queryAddBindClassify(data) {
  559. // return request(`/api/v1/purchase/bom/add-bind-classify`, {
  560. // method: 'POST',
  561. // body: data,
  562. // });
  563. // }
  564. // export async function queryDelPurchaseExcel(params) {
  565. // let res = await request(`/api/v1/purchase/bom/del-purchase-excel?${stringify(params)}`, {
  566. // method: 'GET',
  567. // });
  568. // return res;
  569. // }
  570. // //提交流转存储表单审批人历史记录
  571. // export async function querySaveBomForm(data) {
  572. // return request(`/api/v1/purchase/bom/save-bom-form`, {
  573. // method: 'POST',
  574. // body: data,
  575. // });
  576. // }
  577. // //章管家失败,重新申请用印
  578. // export async function queryTrySeal(params) {
  579. // let res = await request(`/api/v1/purchase/bom/try-seal?${stringify(params)}`, {
  580. // method: 'GET',
  581. // });
  582. // return res;
  583. // }
  584. // export async function ChartTempOSSData(params) {
  585. // return request(`/api/v1/purchase/bom/contract-file/${params.projectId}`);
  586. // }
  587. // // 设置最终版本
  588. // export async function setLastVersion(excelId) {
  589. // return request(`/api/v1/purchase/bom/set-last-version/${excelId}`);
  590. // }