Przeglądaj źródła

添加复制审批流功能

Renxy 2 lat temu
rodzic
commit
fe9b5e5297

+ 13 - 4
src/pages/Flow/AuditModal.js

@@ -3,7 +3,7 @@ import { Modal, Input, Form, Select } from 'antd';
 
 // 审批意见
 function AuditModal(props) {
-  const { visible, onCancel, onOk, loading, classify } = props;
+  const { data, visible, onCancel, onOk, loading, classify } = props;
   const [form] = Form.useForm();
   const formLayout = { labelCol: { span: 4 }, wrapperCol: { span: 14 } };
 
@@ -13,6 +13,7 @@ function AuditModal(props) {
   };
 
   useEffect(() => {
+    console.log('===============', data);
     if (visible) form.resetFields();
   }, [visible]);
   return (
@@ -25,13 +26,21 @@ function AuditModal(props) {
       onOk={handleOk}
     >
       <Form {...formLayout} form={form}>
-        <Form.Item label="流程名称" name="name">
+        <Form.Item
+          label="流程名称"
+          name="name"
+          initialValue={data ? `${data?.name}_copy` : ''}
+        >
           <Input />
         </Form.Item>
-        <Form.Item label="详情" name="desc">
+        <Form.Item label="详情" name="desc" initialValue={data?.desc}>
           <Input.TextArea />
         </Form.Item>
-        <Form.Item label="分类" name="classify_id">
+        <Form.Item
+          label="分类"
+          name="classify_id"
+          initialValue={data?.classify_id}
+        >
           <Select
             options={classify.map((item) => ({
               value: item.id,

+ 52 - 6
src/pages/Flow/index.js

@@ -1,16 +1,19 @@
-import React, { useState, useEffect } from 'react';
-import { Button, Table } from 'antd';
+import React, { useState, useEffect, useRef } from 'react';
+import { Button, Space, Table, message } from 'antd';
 import { connect, useNavigate } from 'umi';
 import AuditModal from './AuditModal';
 import PageContent from '@/components/PageContent';
+import { queryProcessFlows, saveAuditFlowInfo } from '@/services/boom';
 
 function Audit(props) {
   const { list = [], classify = [], dispatch, loading } = props;
   let navigate = useNavigate();
+  const [data, setData] = useState();
   const [visible, setVisible] = useState({
     audit: false,
     auditNode: false,
   });
+  const detailRef = useRef();
   const columns = [
     {
       title: '审批流名称',
@@ -24,7 +27,7 @@ function Audit(props) {
     {
       title: '操作',
       render: (item, index) => (
-        <>
+        <Space>
           <a
             onClick={() => {
               setCurrentNode(item);
@@ -32,10 +35,48 @@ function Audit(props) {
           >
             编辑
           </a>
-        </>
+          <a
+            onClick={() => {
+              setData(item);
+              changeVisible('audit', true);
+              queryDetail(item);
+            }}
+          >
+            复制
+          </a>
+        </Space>
       ),
     },
   ];
+  const queryDetail = async (item) => {
+    const res = await queryProcessFlows({ ids: Number(item.id) });
+    if (res?.data) {
+      detailRef.current = res.data;
+    }
+  };
+
+  const handleCopy = async (values) => {
+    dispatch({
+      type: 'flow/addAudit',
+      payload: {
+        ...values,
+        flow_type: 1,
+      },
+      callback: async (res) => {
+        if (res?.data && detailRef.current) {
+          let param = {
+            id: Number(res.data?.id),
+            form_json: detailRef.current.form_json,
+            process_json: detailRef.current.process_json,
+            process_simple_json: detailRef.current.process_simple_json,
+          };
+          saveAuditFlowInfo(param).then((res) => message.success('添加成功'));
+          // dispatch({ type: 'flow/saveAuditFlowInfo', payload: param });
+        }
+        changeVisible('audit', false);
+      },
+    });
+  };
   const handleAuditOk = (values) => {
     dispatch({
       type: 'flow/addAudit',
@@ -44,6 +85,7 @@ function Audit(props) {
         flow_type: 1,
       },
       callback: () => {
+        message.success('新增成功');
         changeVisible('audit', false);
       },
     });
@@ -84,7 +126,10 @@ function Audit(props) {
     <PageContent>
       <Button
         key={1}
-        onClick={() => changeVisible('audit', true)}
+        onClick={() => {
+          setData(null);
+          changeVisible('audit', true);
+        }}
         type="primary"
       >
         新建流程
@@ -98,9 +143,10 @@ function Audit(props) {
       />
 
       <AuditModal
+        data={data}
         loading={loading['flow/addAudit']}
         visible={visible.audit}
-        onOk={handleAuditOk}
+        onOk={data ? handleCopy : handleAuditOk}
         onCancel={() => changeVisible('audit', false)}
         classify={classify}
       />

+ 2 - 3
src/pages/Flow/models/flow.js

@@ -85,9 +85,8 @@ export default {
     },
     *addAudit({ payload, callback }, { call, put }) {
       try {
-        yield call(addAudit, payload);
-        message.success('新增成功');
-        callback && callback();
+        const response = yield call(addAudit, payload);
+        callback && callback(response);
         yield put({
           type: 'queryAuditList',
           payload: {