Renxy пре 1 година
родитељ
комит
c196cd1733

+ 1 - 0
package.json

@@ -42,6 +42,7 @@
     "@babel/runtime": "^7.3.1",
     "@opuscapita/react-filemanager": "^1.1.0-beta.6",
     "@opuscapita/react-filemanager-connector-node-v1": "^1.1.0-beta.6",
+    "ahooks": "^3.7.8",
     "antd": "^4.0.0",
     "array-move": "^3.0.1",
     "axios": "^0.24.0",

+ 4 - 2
src/pages/PurchaseAdmin/PurchaseList/Approval/DetailModal.js

@@ -95,6 +95,8 @@ function DetailModal(props) {
   };
 
   const uploadProps = {
+    name: 'files',
+    multiple: true,
     action: `/api/v2/approval/attach`,
     headers: {
       'JWT-TOKEN': localStorage.getItem('JWT-TOKEN'),
@@ -102,8 +104,8 @@ function DetailModal(props) {
     // defaultFileList: attachData?.attach_extend,
     onChange({ file, fileList }) {
       if (file.status !== 'uploading') {
-        const list = fileList.map(item => item.response?.data?.attach);
-        setParams({ ...params, attach: list });
+        const data = fileList.map(item => item.response?.data);
+        setParams({ ...params, attach: [...params.attach, data] });
       }
     },
   };

+ 33 - 14
src/pages/PurchaseAdmin/PurchaseList/DailyRecord/components/WriteRecordModal.js

@@ -1,15 +1,17 @@
-import { Button, Col, Form, Input, Modal, Row, Select } from 'antd';
+import { Button, Col, Form, Input, Modal, Row, Select, message } from 'antd';
 import styles from './index.less';
-import { useEffect, useState } from 'react';
+import { useEffect, useMemo, useState } from 'react';
 import { DeleteOutlined } from '@ant-design/icons';
+import { approvalLog } from '@/services/record';
 
 const WriteRecordModal = ({ visible, user, projects, loading = false, onOk, onCancel }) => {
   const [form] = Form.useForm();
-  const defaultData = { projectName: '', tip: '', doc: '' };
+  const defaultData = { code_id: '', title: '', content: '' };
   const [list, setList] = useState([defaultData]);
-  console.log(user);
+  console.log(user, list);
+
   useEffect(() => {
-    if (!visible) setList([]);
+    if (!visible) setList([defaultData]);
   }, [visible]);
 
   const handleAddClick = () => {
@@ -28,8 +30,14 @@ const WriteRecordModal = ({ visible, user, projects, loading = false, onOk, onCa
     newList.splice(idx, 1);
     setList(newList);
   };
+  console.log('00000000000---------', list);
+
+  const handleOk = () => {
+    onOk(list);
+  };
+
   return (
-    <Modal title="写日志" open={visible} width={800} onOk={onOk} onCancel={onCancel}>
+    <Modal title="写日志" open={visible} width={800} onOk={handleOk} onCancel={onCancel}>
       <Form
         labelCol={{ span: 4 }}
         wrapperCol={{ span: 18 }}
@@ -53,7 +61,7 @@ const WriteRecordModal = ({ visible, user, projects, loading = false, onOk, onCa
         >
           {list.map((item, idx) => (
             <RenderItem
-              key={`${item.projectName}_${idx}`}
+              key={`${item.code_id}_${idx}`}
               idx={idx}
               projects={projects}
               data={item}
@@ -77,6 +85,9 @@ export default WriteRecordModal;
 
 const RenderItem = ({ idx, data, projects, onChange, onDelete }) => {
   const [form] = Form.useForm();
+  const projectName = useMemo(() => {
+    return projects.find(item => item.ID == data.code_id)?.Name || '';
+  }, [data.code_id]);
   return (
     <div className={styles.itemContent}>
       <Form labelCol={{ span: 7 }} wrapperCol={{ span: 17 }} width="100%" form={form}>
@@ -85,7 +96,7 @@ const RenderItem = ({ idx, data, projects, onChange, onDelete }) => {
             <Form.Item
               label="项目名称"
               name="projectName"
-              initialValue={data.projectName}
+              initialValue={projectName}
               rules={[{ required: true, message: '请选择项目' }]}
             >
               <Select
@@ -93,17 +104,21 @@ const RenderItem = ({ idx, data, projects, onChange, onDelete }) => {
                 options={projects?.map(item => {
                   return { label: item.Name, value: item.ID };
                 })}
+                onChange={id => onChange(idx, { ...data, code_id: id })}
               />
             </Form.Item>
           </Col>
           <Col span={11} offset={1}>
             <Form.Item
               label="日志概述"
-              name="tip"
-              initialValue={data.tip}
+              name="title"
+              initialValue={data.title}
               rules={[{ required: true, message: '请选择成员' }]}
             >
-              <Input />
+              <Input
+                value={data.title}
+                onChange={e => onChange(idx, { ...data, title: e.target.value })}
+              />
             </Form.Item>
           </Col>
         </Row>
@@ -112,10 +127,14 @@ const RenderItem = ({ idx, data, projects, onChange, onDelete }) => {
           labelCol={{ span: 3 }}
           wrapperCol={{ span: 21 }}
           label="日志详情"
-          initialValue={data.doc}
-          name="doc"
+          initialValue={data.content}
+          name="content"
         >
-          <Input.TextArea style={{ height: 120 }} />
+          <Input.TextArea
+            style={{ height: 120 }}
+            value={data.content}
+            onChange={e => onChange(idx, { ...data, content: e.target.value })}
+          />
         </Form.Item>
       </Form>
       <DeleteOutlined className={styles.delIcon} onClick={idx => onDelete(idx)} />

+ 27 - 3
src/pages/PurchaseAdmin/PurchaseList/DailyRecord/index.js

@@ -4,12 +4,35 @@ import WriteRecordModal from './components/WriteRecordModal';
 import { connect } from 'dva';
 import RecordDetailModal from './components/RecordDetail';
 import styles from './index.less';
+import { useRequest } from 'ahooks';
+import { approvalAddLog, approvalEditLog, approvalLogOwnList } from '@/services/record';
 
 const DailyRecord = props => {
   const { currentUser, projects, dispatch } = props;
   const [date, setDate] = useState('');
   const [visible, setVisible] = useState(false);
-  const [detailOpen, setDetailOpen] = useState(true);
+  const [detailOpen, setDetailOpen] = useState(false);
+
+  //请求列表
+  const { data, run, loading } = useRequest(date => approvalLogOwnList(date), {});
+
+  //添加日志
+  const { run: runAdd } = useRequest(approvalAddLog, {
+    manual: true,
+    onSuccess: () => {
+      message('添加日志成功');
+      run();
+    },
+  });
+
+  //添加日志
+  const { run: runEdit } = useRequest(approvalEditLog, {
+    manual: true,
+    onSuccess: () => {
+      message('编辑日志成功');
+      run();
+    },
+  });
 
   const columns = [
     {
@@ -61,6 +84,7 @@ const DailyRecord = props => {
 
   const onChange = (date, dateString) => {
     console.log(date, dateString);
+    run({ s_time: `${dateString} 00:00:00`, e_time: `${dateString} 23:59:59` });
   };
   return (
     <div>
@@ -75,12 +99,12 @@ const DailyRecord = props => {
           写日志
         </Button>
       </div>
-      <Table columns={columns} dataSource={dataSource} />
+      <Table columns={columns} dataSource={data?.list} pagination={data?.pagination} />
       <WriteRecordModal
         visible={visible}
         user={currentUser}
         projects={projects}
-        onOk={() => {}}
+        onOk={runAdd}
         onCancel={() => setVisible(false)}
       />
       <RecordDetailModal visible={detailOpen} onCancel={() => setDetailOpen(false)} />

+ 20 - 0
src/services/record.js

@@ -0,0 +1,20 @@
+import request from '@/utils/request';
+import { stringify } from 'qs';
+//新增日志接口
+export async function approvalAddLog(params) {
+  return request(`/api/v2/approval/log`, {
+    method: 'POST',
+    body: params,
+  });
+}
+//编辑日志接口
+export async function approvalEditLog(params) {
+  return request(`/api/v2/approval/log/${params.id}`, {
+    method: 'PUT',
+    body: params,
+  });
+}
+//请求个人日志列表
+export async function approvalLogOwnList(params) {
+  return request(`/api/v2/approval/log-own/list?${stringify(params)}`);
+}