Преглед изворни кода

任务#1795 项目管理列表增加修改项目经理的功能,只换项目经理不换归属部门

hanxin пре 2 година
родитељ
комит
d4d448cc5e

+ 21 - 0
src/pages/PurchaseAdmin/PurchaseList/Approval/List.js

@@ -9,6 +9,7 @@ import ExecutionModal from './ExecutionModal';
 import MemberModal from './MemberModal';
 import QualityOperateModal from './QualityOperateModal';
 import BudgetModal from './BudgetModal';
+import ModifyManagerModal from './ModifyManagerModal';
 import { connect } from 'dva';
 
 const { Option } = Select;
@@ -42,6 +43,7 @@ function List(props) {
   const [selfItems, setSelfItems] = useState(false);
   const [currentItem, setCurrentItem] = useState({});
   const [qualityOperate, setQualityOperate] = useState(0);
+  const [modifyManagerVisible, setModifyManagerVisible] = useState(false);
   const columns = [
     {
       title: '项目编号',
@@ -445,6 +447,16 @@ function List(props) {
         }
         break;
     }
+    let modifyManager = (<a
+      onClick={() => {
+        setCurrentItem(record);
+        setModifyManagerVisible(true);
+      }}
+    >
+      修改项目经理
+    </a>)
+    if (project_status === 0 || project_status === 5)
+      dividerPush(modifyManager, toReturn);
     return toReturn;
   };
 
@@ -543,6 +555,15 @@ function List(props) {
         onCancel={() => setBudgetVisible(false)}
         onOk={() => setBudgetVisible(false)}
       />
+      <ModifyManagerModal
+        depUserTree={depUserTree}
+        loading={loading}
+        visible={modifyManagerVisible}
+        onClose={() => setModifyManagerVisible(false)}
+        currentItem={currentItem}
+        dataSource={member}
+        onOk={() => setModifyManagerVisible(false)}
+      />
     </div>
   );
 }

+ 60 - 0
src/pages/PurchaseAdmin/PurchaseList/Approval/ModifyManagerModal.js

@@ -0,0 +1,60 @@
+import React, { useState, useEffect } from 'react';
+import { Form, Modal, TreeSelect, Table, Button, Input } from 'antd';
+import { connect } from 'dva';
+const { TreeNode } = TreeSelect;
+
+function ModifyManagerModal(props) {
+  const { visible, onClose, currentItem, loading, depUserTree, dataSource, dispatch, onOk } = props;
+  const [form] = Form.useForm();
+  // useEffect(() => {
+  //   form.resetFields();
+  // }, []);
+  const handleOk = () => {
+    form.validateFields().then(({ managerID }) => {
+      console.log(managerID,currentItem);
+      const [user_id, dep_id] = managerID.split('||');
+      dispatch({
+        type: 'approval/modifyManager',
+        payload: {
+          user_id: Number(user_id),
+          flag: Number(currentItem?.project_status),
+          project_id: Number(currentItem?.id)
+        },
+        callback: () => onOk?.(),
+      });
+    });
+  };
+
+  return (
+    <Modal
+      title="修改项目经理"
+      confirmLoading={loading}
+      maskClosable={false}
+      destroyOnClose
+      visible={visible}
+      onCancel={onClose}
+      onOk={handleOk}
+    >
+      <Form labelCol={{ span: 5 }} wrapperCol={{ span: 15 }} form={form}>
+        <Form.Item
+          label="项目经理"
+          name="managerID"
+          rules={[{ required: true, message: '请选择项目经理' }]}
+        >
+          <TreeSelect
+            showSearch
+            allowClear
+            style={{ width: '100%' }}
+            placeholder="请选择项目经理"
+            multiple={false}
+            filterTreeNode={(input, option) => {
+              return option.props.title === input;
+            }}
+            treeData={depUserTree}
+          />
+        </Form.Item>
+      </Form>
+    </Modal>
+  );
+}
+export default connect()(ModifyManagerModal);

+ 10 - 0
src/pages/PurchaseAdmin/PurchaseList/Approval/models/approval.js

@@ -18,6 +18,7 @@ import {
   deleteMember,
   queryBudget,
   setBudget,
+  modifyManager,
 } from '@/services/approval';
 import { message } from 'antd';
 import moment from 'moment';
@@ -258,6 +259,15 @@ export default {
       if (!res) return;
       message.success('项目预算设置成功');
     },
+    *modifyManager({ payload, callback }, { call, put }) {
+      const res = yield call(modifyManager, payload);
+      if (!res) return;
+      callback?.();
+      message.success('修改项目经理成功');
+      yield put({
+        type: 'queryApproval',
+      });
+    },
   },
 
   reducers: {

+ 8 - 0
src/services/approval.js

@@ -123,3 +123,11 @@ export async function setBudget(params) {
     body: params,
   });
 }
+
+//修改项目经理
+export async function modifyManager(params) {
+  return request(`/api/v2/workload/project/change_pm`, {
+    method: 'POST',
+    body: params,
+  });
+}