Prechádzať zdrojové kódy

敏捷任务#1799 售前支持(10100)相关的工时在提交时需指定部门

hanxin 2 rokov pred
rodič
commit
2d5bd6d4cc

+ 33 - 18
src/pages/PurchaseAdmin/PurchaseList/WorkingHours/AddModal.js

@@ -1,10 +1,11 @@
 import React, { useState } from 'react';
-import { message, Form, Modal, Select, DatePicker } from 'antd';
+import { message, Form, Modal, Select, DatePicker, TreeSelect } from 'antd';
 import { connect } from 'dva';
 import moment from 'moment';
 
 const { Option } = Select;
 const { MonthPicker } = DatePicker;
+const { TreeNode } = TreeSelect;
 
 function AddModal(props) {
   const {
@@ -17,6 +18,7 @@ function AddModal(props) {
     dispatch,
     project = [],
     loading,
+    depUserTree
   } = props;
   const [form] = Form.useForm();
   const [type, setType] = useState({});
@@ -33,21 +35,24 @@ function AddModal(props) {
         values.project = '0';
       }
 
-      onOk([
-        {
-          type_id: Number(values.subType),
-          comment: '',
-          // 父级id
-          parent_type_id: Number(values.type),
-          data: [
-            {
-              project_id: Number(values.project),
-              workload: 0,
-              day: time,
-            },
-          ],
-        },
-      ]);
+      let params = [{
+        type_id: Number(values.subType),
+        comment: '',
+        // 父级id
+        parent_type_id: Number(values.type),
+        data: [
+          {
+            project_id: Number(values.project),
+            workload: 0,
+            day: time,
+          },
+        ],
+      }]
+      if (type.type == 0) {
+        console.log(values);
+        params[0].data[0].pay_dep_id = Number(values.pay_dep_id);
+      }
+      onOk(params);
 
       //将分类设为空,避免再次打开时有项目选单
       setType({});
@@ -181,8 +186,18 @@ function AddModal(props) {
   //部门选择
   const renderDepSelect = () => {
     return (
-      <Form.Item label="部门" name="dep" rules={[{ required: true, message: '请选择部门' }]}>
-        <Select></Select>
+      <Form.Item label="部门" name="pay_dep_id" rules={[{ required: true, message: '请选择部门' }]}>
+        <TreeSelect
+          showSearch
+          allowClear
+          style={{ width: 240 }}
+          placeholder="请选择部门"
+          multiple={false}
+          treeData={depUserTree}
+          filterTreeNode={(input, option) => {
+            return option.props.title === input;
+          }}
+        />
       </Form.Item>
     );
   };

+ 15 - 1
src/pages/PurchaseAdmin/PurchaseList/WorkingHours/index.js

@@ -6,7 +6,7 @@ import { connect } from 'dva';
 import moment from 'moment';
 
 function List(props) {
-  const { typeList, dispatch, loading, dataList, projectList, currentUser, allType } = props;
+  const { typeList, dispatch, loading, dataList, projectList, currentUser, allType, depUserTree } = props;
   const [visible, setVisible] = useState(false);
   const [current, setCurrent] = useState({
     date: moment(),
@@ -33,6 +33,7 @@ function List(props) {
                 project_id: item.project_id,
                 workload: workload,
                 day: item.time,
+                pay_dep_id: item.pay_dep_id
               },
             ],
           },
@@ -60,6 +61,7 @@ function List(props) {
       cancelText: '取消',
       onOk() {
         let params = [];
+        debugger
         for (let i = 0; i < dataList.length; i++) {
           const element = dataList[i];
           if (element.audit_state != 0) continue;
@@ -72,6 +74,7 @@ function List(props) {
               project_id: element.project_id,
               workload: element.workload,
               day: element.time,
+              pay_dep_id: element.pay_dep_id
             });
           } else {
             let data = [];
@@ -80,6 +83,7 @@ function List(props) {
               project_id: element.project_id,
               workload: element.workload,
               day: element.time,
+              pay_dep_id: element.pay_dep_id
             });
             params.push({
               type_id: Number(element.type_id),
@@ -119,6 +123,7 @@ function List(props) {
               project_id: element.project_id,
               workload: element.workload,
               day: element.time,
+              pay_dep_id: element.pay_dep_id
             });
           } else {
             let data = [];
@@ -127,6 +132,7 @@ function List(props) {
               project_id: element.project_id,
               workload: element.workload,
               day: element.time,
+              pay_dep_id: element.pay_dep_id
             });
             params.push({
               type_id: Number(element.type_id),
@@ -158,6 +164,7 @@ function List(props) {
             project_id: Number(item.project_id),
             workload: workload,
             day: item.time,
+            pay_dep_id: item.pay_dep_id
           },
         ],
       },
@@ -335,6 +342,11 @@ function List(props) {
   // useEffect(() => {
   //   onChangeDate(current.date);
   // }, [dataList]);
+  useEffect(() => {
+    dispatch({
+      type: 'workload/fetchDepV2',
+    });
+  }, []);
 
   return (
     <div>
@@ -387,6 +399,7 @@ function List(props) {
         onOk={onAddWork}
         time={current.date?.format('YYYY-MM-DD')}
         onCancel={() => setVisible(false)}
+        depUserTree={depUserTree}
       />
     </div>
   );
@@ -398,4 +411,5 @@ export default connect(({ workload, user, loading }) => ({
   allType: workload.allType,
   currentUser: user.currentUser,
   loading: loading.models.workload,
+  depUserTree: workload.depUserTree
 }))(List);

+ 27 - 0
src/pages/PurchaseAdmin/PurchaseList/WorkingHours/models/workingHours.js

@@ -9,9 +9,24 @@ import {
   deleteWorkHour,
 } from '@/services/workHours';
 import { queryRole } from '@/services/SysAdmin';
+import { queryDepV2 } from '@/services/approval';
 import { message } from 'antd';
 import moment from 'moment';
 
+function getDepUserTree(data) {
+  data.title = `${data.Name}`;
+  data.key = `${data.ID}`;
+  data.value = `${data.ID}`;
+  if (!data.children) data.children = new Array();
+
+  if (data.children) {
+    data.children.forEach(item => {
+      getDepUserTree(item);
+    });
+  }
+  return data;
+}
+
 export default {
   namespace: 'workload',
   state: {
@@ -196,6 +211,18 @@ export default {
         callback,
       });
     },
+    *fetchDepV2({ payload, callback }, { call, put }) {
+      const response = yield call(queryDepV2, { pageSize: 999999 });
+      if (response) {
+        const depUserTree = response.data.list.map(item => {
+          return getDepUserTree(item);
+        });
+        yield put({
+          type: 'save',
+          payload: { depUserTree },
+        });
+      }
+    },
   },
 
   reducers: {