XuZinan 2 年 前
コミット
d3df545908

+ 4 - 0
config/router.config.js

@@ -40,6 +40,10 @@ export default [
             path: '/home/report/department',
             path: '/home/report/department',
             component: './PurchaseAdmin/PurchaseList/Report/Department',
             component: './PurchaseAdmin/PurchaseList/Report/Department',
           },
           },
+          {
+            path: '/home/report/finance',
+            component: './PurchaseAdmin/PurchaseList/Report/Finance',
+          },
           {
           {
             path: '/home/approval/list',
             path: '/home/approval/list',
             component: './PurchaseAdmin/PurchaseList/Approval/List',
             component: './PurchaseAdmin/PurchaseList/Approval/List',

+ 30 - 14
src/pages/PurchaseAdmin/PurchaseList/Index.js

@@ -25,6 +25,20 @@ function LayoutDetail(props) {
       type: 'user/fetchCurrent',
       type: 'user/fetchCurrent',
     });
     });
   }, []);
   }, []);
+  const checkReport = state => {
+    if (isAdmin) return true;
+    const manager = currentUser.is_leader || currentUser.is_opt_mgr || currentUser.is_wty_mgr;
+    switch (state) {
+      case 0:
+        return currentUser.is_accountant || manager || permission['func-01-point-works-report'];
+      case 1:
+        return manager || permission['func-01-point-works-report-p'];
+      case 2:
+        return permission['func-01-point-works-report-d'];
+      case 3:
+        return currentUser.is_accountant || permission['func-01-point-works-report-p-s'];
+    }
+  };
   return (
   return (
     <Layout>
     <Layout>
       <Header>
       <Header>
@@ -54,32 +68,34 @@ function LayoutDetail(props) {
                   <Link to="/home/approval/auth">审核列表</Link>
                   <Link to="/home/approval/auth">审核列表</Link>
                 </Menu.Item>
                 </Menu.Item>
               </SubMenu>
               </SubMenu>
-      
-              {(isAdmin ||
-                currentUser.is_leader ||
-                currentUser.is_accountant ||
-                permission['func-01-point-works-report']) && (
+
+              {checkReport(0) && (
                 <SubMenu key="/home/report" title="工时报表">
                 <SubMenu key="/home/report" title="工时报表">
-                  {(isAdmin ||
-                    currentUser.is_leader ||
-                    currentUser.is_accountant ||
-                    permission['func-01-point-works-report-p'] ||
-                    permission['func-01-point-works-report-p-s']) && (
+                  {/* <Menu.Item key="/home/report/resource">
+                  <Link to="/home/report/resource">资源报表</Link>
+                </Menu.Item> */}
+                  {checkReport(1) && (
                     <Menu.Item key="/home/report/project">
                     <Menu.Item key="/home/report/project">
                       <Link to="/home/report/project">项目报表</Link>
                       <Link to="/home/report/project">项目报表</Link>
                     </Menu.Item>
                     </Menu.Item>
                   )}
                   )}
-                  {(isAdmin || permission['func-01-point-works-report-d']) && (
+                  {checkReport(2) && (
                     <Menu.Item key="/home/report/department">
                     <Menu.Item key="/home/report/department">
                       <Link to="/home/report/department">部门报表</Link>
                       <Link to="/home/report/department">部门报表</Link>
                     </Menu.Item>
                     </Menu.Item>
                   )}
                   )}
+                  {checkReport(3) && (
+                    <Menu.Item key="/home/report/finance">
+                      <Link to="/home/report/finance">财务报表</Link>
+                    </Menu.Item>
+                  )}
                 </SubMenu>
                 </SubMenu>
               )}
               )}
+
               {/* {isAdmin && ( */}
               {/* {isAdmin && ( */}
-                <Menu.Item key="/home">
-                  <Link to="/home">采购清单</Link>
-                </Menu.Item>
+              <Menu.Item key="/home">
+                <Link to="/home">采购清单</Link>
+              </Menu.Item>
               {/* )} */}
               {/* )} */}
               <Menu.Item key="/home/flow-list">
               <Menu.Item key="/home/flow-list">
                 <Link to="/home/flow-list">流程图</Link>
                 <Link to="/home/flow-list">流程图</Link>

+ 14 - 16
src/pages/PurchaseAdmin/PurchaseList/Report/Department.js

@@ -10,7 +10,8 @@ import { downloadFile, getToken } from '@/utils/utils.js';
 const { RangePicker } = DatePicker;
 const { RangePicker } = DatePicker;
 
 
 function Department(props) {
 function Department(props) {
-  const { dispatch, form, loading, dep } = props;
+  const { dispatch, loading, dep } = props;
+  const [form] = Form.useForm();
   const [visible, setVisible] = useState(false);
   const [visible, setVisible] = useState(false);
   const [modalFilter, setModalFilter] = useState({});
   const [modalFilter, setModalFilter] = useState({});
   const columns = [
   const columns = [
@@ -68,16 +69,15 @@ function Department(props) {
   ];
   ];
   const filterRef = useRef({ pageSize: 99999 });
   const filterRef = useRef({ pageSize: 99999 });
   const handleSearch = () => {
   const handleSearch = () => {
-    form.validateFields((error, { time }) => {
-      filterRef.current.s_time = time[0] ? moment(time[0]).format('YYYY-MM-DD') : null;
-      filterRef.current.e_time = time[1] ? moment(time[1]).format('YYYY-MM-DD') : null;
+    const { time } = form.getFieldsValue();
+    filterRef.current.s_time = time[0] ? moment(time[0]).format('YYYY-MM-DD') : null;
+    filterRef.current.e_time = time[1] ? moment(time[1]).format('YYYY-MM-DD') : null;
 
 
-      dispatch({
-        type: 'report/queryDepReport',
-        payload: {
-          filter: filterRef.current,
-        },
-      });
+    dispatch({
+      type: 'report/queryDepReport',
+      payload: {
+        filter: filterRef.current,
+      },
     });
     });
   };
   };
   const handleDownload = () => {
   const handleDownload = () => {
@@ -91,11 +91,9 @@ function Department(props) {
   };
   };
   const renderSearch = () => {
   const renderSearch = () => {
     return (
     return (
-      <Form layout="inline">
-        <Form.Item label="时间">
-          {form.getFieldDecorator('time', {
-            initialValue: [moment().startOf('years'), moment()],
-          })(<RangePicker placeholder="选择时间" />)}
+      <Form layout="inline" form={form}>
+        <Form.Item label="时间" name="time" initialValue={[moment().startOf('years'), moment()]}>
+          <RangePicker placeholder="选择时间" allowClear={false} />
         </Form.Item>
         </Form.Item>
         <Form.Item>
         <Form.Item>
           <Button type="primary" loading={loading} onClick={handleSearch}>
           <Button type="primary" loading={loading} onClick={handleSearch}>
@@ -159,4 +157,4 @@ function Department(props) {
 export default connect(({ report, loading }) => ({
 export default connect(({ report, loading }) => ({
   dep: report.dep,
   dep: report.dep,
   loading: loading.models.report,
   loading: loading.models.report,
-}))(Form.create()(Department));
+}))(Department);

+ 26 - 30
src/pages/PurchaseAdmin/PurchaseList/Report/Finance.js

@@ -8,7 +8,8 @@ import { downloadFile, getToken } from '@/utils/utils.js';
 const { RangePicker } = DatePicker;
 const { RangePicker } = DatePicker;
 
 
 function Finance(props) {
 function Finance(props) {
-  const { dispatch, form, loading, finance } = props;
+  const { dispatch, loading, finance } = props;
+  const [form] = Form.useForm();
   const [modalFilter, setModalFilter] = useState({});
   const [modalFilter, setModalFilter] = useState({});
   const columns = [
   const columns = [
     { title: '资源名称', dataIndex: 'c_name' },
     { title: '资源名称', dataIndex: 'c_name' },
@@ -41,18 +42,17 @@ function Finance(props) {
     });
     });
   };
   };
   const handleSearch = () => {
   const handleSearch = () => {
-    form.validateFields((error, { time, project_name, project_status }) => {
-      filterRef.current.s_time = time[0] ? moment(time[0]).format('YYYY-MM-DD') : null;
-      filterRef.current.e_time = time[1] ? moment(time[1]).format('YYYY-MM-DD') : null;
-      filterRef.current.project_name = project_name;
-      filterRef.current.project_status = project_status;
+    const { time, project_name, project_status } = form.getFieldsValue();
+    filterRef.current.s_time = time[0] ? moment(time[0]).format('YYYY-MM-DD') : null;
+    filterRef.current.e_time = time[1] ? moment(time[1]).format('YYYY-MM-DD') : null;
+    filterRef.current.project_name = project_name;
+    filterRef.current.project_status = project_status;
 
 
-      dispatch({
-        type: 'report/queryFinanceReport',
-        payload: {
-          ...filterRef.current,
-        },
-      });
+    dispatch({
+      type: 'report/queryFinanceReport',
+      payload: {
+        ...filterRef.current,
+      },
     });
     });
   };
   };
   const handleDownload = () => {
   const handleDownload = () => {
@@ -68,24 +68,20 @@ function Finance(props) {
   };
   };
   const renderSearch = () => {
   const renderSearch = () => {
     return (
     return (
-      <Form layout="inline">
-        <Form.Item label="时间">
-          {form.getFieldDecorator('time', {
-            initialValue: [moment().startOf('years'), moment()],
-          })(<RangePicker placeholder="选择时间" />)}
+      <Form layout="inline" form={form}>
+        <Form.Item label="时间" name="time" initialValue={[moment().startOf('years'), moment()]}>
+          <RangePicker placeholder="选择时间" allowClear={false} />
+        </Form.Item>
+        <Form.Item label="项目名称" name="project_name">
+          <Input />
         </Form.Item>
         </Form.Item>
-        <Form.Item label="项目名称">{form.getFieldDecorator('project_name')(<Input />)}</Form.Item>
-        <Form.Item label="项目状态">
-          {form.getFieldDecorator('project_status', {
-            initialValue: null,
-          })(
-            <Select style={{ width: 120 }}>
-              <Select.Option value={null}>全部</Select.Option>
-              {STATUS.map(item => (
-                <Select.Option key={item.value}>{item.label}</Select.Option>
-              ))}
-            </Select>
-          )}
+        <Form.Item label="项目状态" name="project_status" initialValue={null}>
+          <Select style={{ width: 120 }}>
+            <Select.Option value={null}>全部</Select.Option>
+            {STATUS.map(item => (
+              <Select.Option key={item.value}>{item.label}</Select.Option>
+            ))}
+          </Select>
         </Form.Item>
         </Form.Item>
         <Form.Item>
         <Form.Item>
           <Button type="primary" loading={loading} onClick={handleSearch}>
           <Button type="primary" loading={loading} onClick={handleSearch}>
@@ -123,4 +119,4 @@ function Finance(props) {
 export default connect(({ report, loading }) => ({
 export default connect(({ report, loading }) => ({
   finance: report.finance,
   finance: report.finance,
   loading: loading.models.report,
   loading: loading.models.report,
-}))(Form.create()(Finance));
+}))(Finance);

+ 25 - 34
src/pages/PurchaseAdmin/PurchaseList/Report/Project.js

@@ -19,7 +19,8 @@ const initDate = [moment().startOf('years'), moment()];
 // }
 // }
 
 
 function Resource(props) {
 function Resource(props) {
-  const { dispatch, form, loading, project } = props;
+  const { dispatch, loading, project } = props;
+  const [form] = Form.useForm();
   const [expandedRowKeys, setExpandedRowKeys] = useState([]);
   const [expandedRowKeys, setExpandedRowKeys] = useState([]);
   const [visible, setVisible] = useState(false);
   const [visible, setVisible] = useState(false);
   const [modalFilter, setModalFilter] = useState({});
   const [modalFilter, setModalFilter] = useState({});
@@ -110,24 +111,23 @@ function Resource(props) {
   // };
   // };
 
 
   const handleSearch = () => {
   const handleSearch = () => {
-    form.validateFields((error, { time, project_name }) => {
-      if (
-        !moment(time[0])
-          .add(12, 'month')
-          .isSameOrAfter(time[1])
-      ) {
-        message.error('时间间隔超过12个月,请重新选择。');
-        return;
-      }
-      filterRef.current.s_time = time[0] ? moment(time[0]).format('YYYY-MM-DD') : null;
-      filterRef.current.e_time = time[1] ? moment(time[1]).format('YYYY-MM-DD') : null;
-      dispatch({
-        type: 'report/queryProjectReport',
-        payload: {
-          ...filterRef.current,
-          project_name: project_name,
-        },
-      });
+    const { time, project_name } = form.getFieldsValue();
+    if (
+      !moment(time[0])
+        .add(12, 'month')
+        .isSameOrAfter(time[1])
+    ) {
+      message.error('时间间隔超过12个月,请重新选择。');
+      return;
+    }
+    filterRef.current.s_time = time[0] ? moment(time[0]).format('YYYY-MM-DD') : null;
+    filterRef.current.e_time = time[1] ? moment(time[1]).format('YYYY-MM-DD') : null;
+    dispatch({
+      type: 'report/queryProjectReport',
+      payload: {
+        ...filterRef.current,
+        project_name: project_name,
+      },
     });
     });
   };
   };
   const handleDownload = () => {
   const handleDownload = () => {
@@ -144,21 +144,12 @@ function Resource(props) {
   };
   };
   const renderSearch = () => {
   const renderSearch = () => {
     return (
     return (
-      <Form layout="inline">
-        <Form.Item label="时间">
-          {form.getFieldDecorator('time', {
-            initialValue: initDate,
-          })(<RangePicker placeholder="选择时间" />)}
+      <Form layout="inline" form={form}>
+        <Form.Item label="时间" name="time" initialValue={initDate}>
+          <RangePicker placeholder="选择时间" allowClear={false} />
         </Form.Item>
         </Form.Item>
-        <Form.Item label="项目">
-          {form.getFieldDecorator('project_name')(
-            <Input />
-            // <Select allowClear showSearch style={{ width: 240 }} placeholder="请选择项目" >
-            //   {projectList.map(item => (
-            //     <Option key={item.ID} value={item.Name}>{item.Name}</Option>
-            //   ))}
-            // </Select>
-          )}
+        <Form.Item label="项目" name="project_name">
+          <Input />
         </Form.Item>
         </Form.Item>
         <Form.Item>
         <Form.Item>
           <Button type="primary" loading={loading} onClick={handleSearch}>
           <Button type="primary" loading={loading} onClick={handleSearch}>
@@ -285,4 +276,4 @@ export default connect(({ report, loading }) => ({
   project: report.project,
   project: report.project,
   // projectList: report.projectList,
   // projectList: report.projectList,
   loading: loading.models.report,
   loading: loading.models.report,
-}))(Form.create()(Resource));
+}))(Resource);

+ 6 - 5
src/pages/PurchaseAdmin/PurchaseList/Report/UserProjectRptModal.js

@@ -4,7 +4,8 @@ import { connect } from 'dva';
 import moment from 'moment';
 import moment from 'moment';
 
 
 function UserProjectRptModal(props) {
 function UserProjectRptModal(props) {
-  const { dispatch, visible, onOk, onCancel, data, filter, loading, form } = props;
+  const { dispatch, visible, onOk, onCancel, data, filter, loading } = props;
+  const [form] = Form.useForm();
   // const getMonthColumns = () => {
   // const getMonthColumns = () => {
   //   let arr = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'];
   //   let arr = ['一', '二', '三', '四', '五', '六', '七', '八', '九', '十', '十一', '十二'];
 
 
@@ -98,9 +99,9 @@ function UserProjectRptModal(props) {
 
 
   return (
   return (
     <Modal title="工时" width="80%" visible={visible} onCancel={onCancel} footer={false}>
     <Modal title="工时" width="80%" visible={visible} onCancel={onCancel} footer={false}>
-      <Form layout="inline" style={{ marginBottom: 20 }}>
-        <Form.Item lable="部门">
-          {form.getFieldDecorator('dep_name')(<Input placeholder="请输入部门" />)}
+      <Form layout="inline" style={{ marginBottom: 20 }} form={form}>
+        <Form.Item lable="部门" name="dep_name">
+          <Input placeholder="请输入部门" />
         </Form.Item>
         </Form.Item>
         <Form.Item>
         <Form.Item>
           <Button type="primary" onClick={handleSearch}>
           <Button type="primary" onClick={handleSearch}>
@@ -122,4 +123,4 @@ function UserProjectRptModal(props) {
 export default connect(({ report, loading }) => ({
 export default connect(({ report, loading }) => ({
   data: report.projectUser,
   data: report.projectUser,
   loading: loading.models.report,
   loading: loading.models.report,
-}))(Form.create()(UserProjectRptModal));
+}))(UserProjectRptModal);