Ver código fonte

敏捷任务#1798 执行项目支持预算设置,项目经理一次设置全部分项

hanxin 2 anos atrás
pai
commit
fd41c9ff95

+ 43 - 23
src/pages/PurchaseAdmin/PurchaseList/Approval/BudgetModal.js

@@ -3,33 +3,53 @@ import { Form, Modal, InputNumber } from 'antd';
 import { connect } from 'dva';
 
 function BudgetModal(props) {
-  const { visible, onCancel, onOk, loading, currentItem } = props;
+  const { visible, onCancel, onOk, loading, currentItem, dispatch, budget } = props;
   const [form] = Form.useForm();
 
   const subTypeList = [
-    { name: '建设期项目管理人员', code: '02-010' },
-    { name: '工程设计人日(含BIM设计)', code: '04-010' },
-    { name: '设计联络人日', code: '05-010' },
-    { name: '金科陪客户设计联络/培训人日', code: '05-050' },
-    { name: '采购和质量控制人日', code: '06-010' },
-    { name: '双胞胎运营平台实施人日', code: '07-010' },
-    { name: '预算审核及费控人日', code: '08-010' },
-    { name: '现场安装/调试/性能测试/试运行人日', code: '10-010' },
-    { name: '质保期项目经理人日', code: '11-010' },
-    { name: '质保期服务工程师人日', code: '11-030' },
-    { name: '运营期项目管理人员', code: '02-030' },
-    { name: '运营期培训人日', code: '05-070' },
-    { name: '运营期采购和质量控制人日', code: '06-030' },
-    { name: '运营期预算审核及费控人日', code: '08-030' },
-    { name: '质保采购工程师人日', code: '11-050' },
-    { name: '投资技术服务人日', code: '18-010' },
-    { name: '运营期技术服务人日', code: '18-030' },
+    { name: '建设期项目管理人员', code: '02-010', id: 12 },
+    { name: '工程设计人日(含BIM设计)', code: '04-010', id: 13 },
+    { name: '设计联络人日', code: '05-010', id: 14 },
+    { name: '金科陪客户设计联络/培训人日', code: '05-050', id: 16 },
+    { name: '采购和质量控制人日', code: '06-010', id: 17 },
+    { name: '双胞胎运营平台实施人日', code: '07-010', id: 18 },
+    { name: '预算审核及费控人日', code: '08-010', id: 19 },
+    { name: '现场安装/调试/性能测试/试运行人日', code: '10-010', id: 20 },
+    { name: '质保期项目经理人日', code: '11-010', id: 21 },
+    { name: '质保期服务工程师人日', code: '11-030', id: 22 },
+    { name: '运营期项目管理人员', code: '02-030', id: 26 },
+    { name: '运营期培训人日', code: '05-070', id: 27 },
+    { name: '运营期采购和质量控制人日', code: '06-030', id: 28 },
+    { name: '运营期预算审核及费控人日', code: '08-030', id: 29 },
+    { name: '质保采购工程师人日', code: '11-050', id: 30 },
+    { name: '投资技术服务人日', code: '18-010', id: 31 },
+    { name: '运营期技术服务人日', code: '18-030', id: 32 },
   ];
 
   const handleOk = () => {
-    onOk();
+    form.validateFields().then(values => {
+      console.log(values);
+      let params = [];
+      let isUpdate = budget?.length !== 0;
+      Object.keys(values).forEach(item => {
+        let elm = {
+          project_id: Number(currentItem?.id),
+          type_id: Number(item),
+          workload: Number(values[item])
+        };
+        if (isUpdate) {
+          elm.id = budget?.find(child => child.type_id == item)?.id;
+        }
+        params.push(elm);
+      })
+      console.log(params);
+      dispatch({
+        type: 'approval/setBudget',
+        payload: params,
+        callback: () => onOk?.(),
+      });
+    });
   };
-
   return (
     <Modal
       title="项目预算"
@@ -40,9 +60,9 @@ function BudgetModal(props) {
       confirmLoading={loading}
       destroyOnClose
     >
-      <Form labelCol={{ span: 10 }} wrapperCol={{ span: 10 }}>
+      <Form form={form} labelCol={{ span: 10 }} wrapperCol={{ span: 10 }}>
         {subTypeList.map(item => (
-          <Form.Item label={item.name} name={item.code} initialValue={0}>
+          <Form.Item label={item.name} name={item.id} initialValue={Number(budget?.find(child => child.type_id === item.id)?.workload) || 0}>
             <InputNumber min={0} style={{ width: '100%' }} />
           </Form.Item>
         ))}
@@ -51,4 +71,4 @@ function BudgetModal(props) {
   );
 }
 
-export default BudgetModal;
+export default connect()(BudgetModal);

+ 12 - 1
src/pages/PurchaseAdmin/PurchaseList/Approval/List.js

@@ -32,6 +32,7 @@ function List(props) {
     loading,
     depUserTree,
     member,
+    budget,
   } = props;
   const [form] = Form.useForm();
   const [addVisible, setAddVisible] = useState(false);
@@ -347,7 +348,15 @@ function List(props) {
         <a
           onClick={() => {
             setCurrentItem(record);
-            setBudgetVisible(true);
+            dispatch({
+              type: 'approval/queryBudget',
+              payload: {
+                project_id: record?.id
+              },
+              callback: () => {
+                setBudgetVisible(true);
+              }
+            });
           }}
         >
           设置人日预算
@@ -554,6 +563,7 @@ function List(props) {
         currentItem={currentItem}
         onCancel={() => setBudgetVisible(false)}
         onOk={() => setBudgetVisible(false)}
+        budget={budget}
       />
       <ModifyManagerModal
         depUserTree={depUserTree}
@@ -577,4 +587,5 @@ export default connect(({ approval, user, loading }) => ({
   loading: loading.models.approval,
   depUserTree: approval.depUserTree,
   member: approval.member,
+  budget: approval.budget
 }))(List);

+ 3 - 1
src/pages/PurchaseAdmin/PurchaseList/Approval/models/approval.js

@@ -245,19 +245,21 @@ export default {
       });
     },
 
-    *queryBudget({ payload }, { call, put }) {
+    *queryBudget({ payload, callback }, { call, put }) {
       const res = yield call(queryBudget, payload);
       if (!res) return;
       yield put({
         type: 'save',
         payload: { budget: res.data },
       });
+      callback?.();
     },
 
     *setBudget({ payload, callback }, { call, put }) {
       const res = yield call(setBudget, payload);
       if (!res) return;
       message.success('项目预算设置成功');
+      callback?.();
     },
     *modifyManager({ payload, callback }, { call, put }) {
       const res = yield call(modifyManager, payload);