index.jsx 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200
  1. /*
  2. * @Author: your name
  3. * @Date: 2021-07-26 10:13:13
  4. * @LastEditTime: 2021-09-10 09:17:42
  5. * @LastEditors: Please set LastEditors
  6. * @Description: In User Settings Edit
  7. * @FilePath: /TracerMethodology_PC/src/pages/UserMana/index.js
  8. */
  9. // import { PlusOutlined } from '@ant-design/icons';
  10. import { Form, Button,Cascader } from 'antd';
  11. import React, { useRef, useState, useEffect } from 'react';
  12. import { PageContainer } from '@ant-design/pro-layout';
  13. import ProTable from '@ant-design/pro-table';
  14. import {
  15. ProFormDatePicker,
  16. } from '@ant-design/pro-form';
  17. import { getDepartmentCostList,calculateData } from './service';
  18. import { getResponsibilityCenterList } from '@/pages/responsibilityCenter/service';
  19. import moment from 'moment';
  20. import 'moment/locale/zh-cn';
  21. import locale from 'antd/es/date-picker/locale/zh_CN';
  22. const DepartmentCostCalculate = () => {
  23. const [currentTime, setCurrentTime] = useState(moment(new Date()).subtract(1, 'months').format('YYYY-MM'));
  24. const [selectableResponsibilityList, setSelectableResponsibilityList] = useState([]);
  25. const [selectedResponsibilityCode,setSelectedResponsibilityCode] = useState(null);
  26. const columns = [
  27. {
  28. title: '选择年月',
  29. key: 'date',
  30. hideInTable: true,
  31. dataIndex: 'date',
  32. renderFormItem: (item, { type, defaultRender, formItemProps, fieldProps, ...rest }, form) => {
  33. if (type === 'form') {
  34. return null;
  35. }
  36. return (
  37. <Form.Item >
  38. <ProFormDatePicker
  39. initialValue={currentTime}
  40. fieldProps={{
  41. picker: 'month', format: (value) => { return value.format('YYYY-MM') }, locale: locale,
  42. onChange: (val) => { console.log({ val }); setCurrentTime(val) }
  43. }}
  44. name="date" />
  45. </Form.Item>
  46. )
  47. },
  48. },
  49. {
  50. title: '选择责任中心',
  51. key: 'responsibilityCode',
  52. hideInTable: true,
  53. fieldProps: (form, config) => {
  54. // console.log({ form, config });
  55. },
  56. dataIndex: 'responsibilityName',
  57. renderFormItem: (item, { type, defaultRender, formItemProps, fieldProps, ...rest }, form) => {
  58. // console.log({item,type, defaultRender,formItemProps, fieldProps,rest,form })
  59. if (type === 'form') {
  60. return null;
  61. }
  62. return (
  63. <Form.Item name="responsibilityCode">
  64. <Cascader options={selectableResponsibilityList}
  65. fieldNames={{
  66. label: 'responsibilityName',
  67. value: 'responsibilityCode',
  68. children: 'child',
  69. }}
  70. onChange={(val)=>{setSelectedResponsibilityCode(val[val.length-1])}}
  71. {...fieldProps}
  72. />
  73. </Form.Item>
  74. )
  75. },
  76. },
  77. {
  78. title: '年份',
  79. dataIndex: 'year',
  80. key: 'year',
  81. hideInSearch: true,
  82. ellipsis: true,
  83. },
  84. {
  85. title: '月份',
  86. dataIndex: 'month',
  87. key: 'month',
  88. hideInSearch: true,
  89. ellipsis: true,
  90. },
  91. {
  92. title: '报表项目编码',
  93. dataIndex: 'reportNum',
  94. key: 'reportNum',
  95. hideInSearch: true,
  96. ellipsis: true,
  97. },
  98. {
  99. title: '报表项目名',
  100. dataIndex: 'reportName',
  101. key: 'reportName',
  102. hideInSearch: true,
  103. ellipsis: true,
  104. },
  105. {
  106. title: '责任中心编码',
  107. dataIndex: 'responsibilityCode',
  108. key: 'responsibilityCode',
  109. hideInSearch: true,
  110. ellipsis: true,
  111. },
  112. {
  113. title: '责任中心名',
  114. dataIndex: 'responsibilityName',
  115. key: 'responsibilityName',
  116. hideInSearch: true,
  117. ellipsis: true,
  118. },
  119. {
  120. title: '金额',
  121. dataIndex: 'amount',
  122. key: 'amount',
  123. ellipsis: true,
  124. hideInSearch: true,
  125. },
  126. ];
  127. const actionRef = useRef();
  128. //获取列表
  129. const getList = async (params = {}, sort, filter) => {
  130. const { date, pageSize, current } = params;
  131. const res = await getDepartmentCostList({ pageSize, current, date: moment(date).format('YYYY-MM-DD'),responsibilityCode:selectedResponsibilityCode});
  132. if (res && res.status) {
  133. return {
  134. data: res.data.list,
  135. total: res.data.totalCount,
  136. success: res.success,
  137. };
  138. }
  139. };
  140. const calculateDatahandle = async ()=>{
  141. await calculateData({date:moment(currentTime).format('YYYY-MM-DD')});
  142. actionRef?.current?.reload();
  143. }
  144. useEffect(async () => {
  145. const responsibilityList = await getResponsibilityCenterList({ pageSize: 500 });
  146. const { data: { list=[] } } = responsibilityList;
  147. setSelectableResponsibilityList(list);
  148. }, []);
  149. return (
  150. <PageContainer>
  151. <ProTable
  152. columns={columns}
  153. request={getList}
  154. actionRef={actionRef}
  155. rowKey="id"
  156. toolBarRender={() => [
  157. <Button type='primary' onClick={()=>calculateDatahandle()}>计算数据</Button>
  158. ]}
  159. pagination={{
  160. pageSize: 10,
  161. }}
  162. search={{
  163. defaultCollapsed: false,
  164. labelWidth: 'auto'
  165. }}
  166. />
  167. </PageContainer>
  168. );
  169. };
  170. export default DepartmentCostCalculate;