Submit.js 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. import React, { useEffect, useState } from 'react';
  2. import { Table, Collapse, Space } from 'antd';
  3. import { connect } from 'dva';
  4. import router from 'umi/router';
  5. import { querySubmitList } from '@/services/bomAuth';
  6. const { Panel } = Collapse;
  7. function Auth(props) {
  8. const { dispatch, typeOptions, currentUser, project } = props;
  9. const [loading, setLoading] = useState(false);
  10. const [data, setData] = useState({
  11. list: [],
  12. pagination: {},
  13. });
  14. const queryData = async page => {
  15. setLoading(true);
  16. try {
  17. const res = await querySubmitList(currentUser.ID, { current_page: page?.current || 1 });
  18. setData(res.data);
  19. } catch (error) {}
  20. setLoading(false);
  21. };
  22. const columns = [
  23. {
  24. title: '流程名称',
  25. dataIndex: 'name',
  26. },
  27. {
  28. title: '清单名称',
  29. dataIndex: 'version_name',
  30. },
  31. // {
  32. // title: '所属项目',
  33. // dataIndex: 'project_id',
  34. // render: project_id => {
  35. // let p = project.list.find(p => p.id == project_id);
  36. // if (p) return `${p.project_name}(${p.project_full_code})`;
  37. // },
  38. // },
  39. {
  40. title: '所属节点',
  41. render: record => record.TemplateNodeInfo.label,
  42. },
  43. {
  44. title: '分类',
  45. render: item => typeOptions.find(cur => cur.id == item.classify_id)?.name,
  46. },
  47. {
  48. title: '待审批人',
  49. width: '15%',
  50. dataIndex: 'audit_comment',
  51. // render: item => {
  52. // let style = { color: getColor(item.audit_status) };
  53. // let txt = '';
  54. // switch (item.audit_status) {
  55. // case 0:
  56. // txt = '未提交';
  57. // break;
  58. // case 1:
  59. // txt = '待审批';
  60. // break;
  61. // case 2:
  62. // txt = '已拒绝';
  63. // break;
  64. // case 3:
  65. // txt = '已通过';
  66. // break;
  67. // case 4:
  68. // txt = '已提交';
  69. // break;
  70. // }
  71. // if (item.status == 1) txt = '已失效';
  72. // return <span style={style}>{txt}</span>;
  73. // },
  74. },
  75. {
  76. title: '操作',
  77. width: '20%',
  78. render: item => (
  79. <Space>
  80. <a onClick={() => loadNode(item)}>加载</a>
  81. </Space>
  82. ),
  83. },
  84. ];
  85. const loadNode = item => {
  86. //调用接口获取version信息
  87. dispatch({
  88. type: 'auth/queryVersionByNode',
  89. payload: { template_node_id: item.TemplateNodeInfo.Id },
  90. callback: versionList => {
  91. let version;
  92. let parentVersion = versionList.find(v => v.id == item.version_id);
  93. if (parentVersion && parentVersion.children) {
  94. version = parentVersion.children.find(v => v.id == item.id);
  95. } else {
  96. version = versionList.find(v => v.id == item.id);
  97. }
  98. localStorage.excelItem = JSON.stringify(version);
  99. router.push(`/home/detail/${item.project_id}/${item.template_id}`);
  100. },
  101. });
  102. };
  103. //监测当前用户,有值时调用列表接口
  104. useEffect(() => {
  105. if (!currentUser.ID) return;
  106. queryData();
  107. }, [currentUser]);
  108. useEffect(() => {
  109. //分类列表
  110. dispatch({ type: 'auth/queryClassify' });
  111. }, []);
  112. return (
  113. <div>
  114. <Table
  115. loading={loading}
  116. columns={columns}
  117. dataSource={data.list}
  118. pagination={data.pagination}
  119. onChange={queryData}
  120. />
  121. </div>
  122. );
  123. }
  124. const getColor = audit_status => {
  125. let color = '';
  126. switch (audit_status) {
  127. case 2:
  128. // 审批拒绝
  129. color = '#f5222d';
  130. break;
  131. case 3:
  132. // 审批成功
  133. color = '#7cb305';
  134. break;
  135. case 4:
  136. // 历史清单
  137. color = '#9b9b9b';
  138. break;
  139. default:
  140. break;
  141. }
  142. return color;
  143. };
  144. export default connect(({ auth, loading, user }) => ({
  145. typeOptions: auth.typeOptions,
  146. currentUser: user.currentUser,
  147. loading,
  148. }))(Auth);