Renxy 1 年間 前
コミット
c92abb8761

+ 1 - 1
src/components/charts/BarChartModule.js

@@ -105,7 +105,7 @@ const defaultOption = {
   },
   legend: {
     // icon: 'circle',
-    left: '20%',
+    left: '10%',
     textStyle: {
       color: '#000',
     },

+ 1 - 1
src/components/charts/PieChartModule.js

@@ -78,7 +78,7 @@ const defaultOption = {
   series: [
     {
       type: 'pie',
-      radius: '70%',
+      radius: '65%',
       data: [
         { value: 1048, name: 'Search Engine' },
         { value: 735, name: 'Direct' },

+ 10 - 3
src/pages/PurchaseAdmin/PurchaseList/Approval/Statistic.js

@@ -58,7 +58,14 @@ const Statistic = props => {
     <div className={styles.statistic}>
       <div className={styles.boxCon}>
         <div style={{ fontSize: '22px' }}>项目统计</div>
-        <div style={{ display: 'flex', width: '100%', justifyContent: 'space-around' }}>
+        <div
+          style={{
+            display: 'flex',
+            width: '100%',
+            justifyContent: 'space-around',
+            margin: '20px 0',
+          }}
+        >
           <div style={{ textAlign: 'center' }}>
             <div style={{ color: '#f5a41f', fontSize: '32px' }}>{data?.total}</div>
             <div>项目总数</div>
@@ -80,7 +87,7 @@ const Statistic = props => {
       <div style={{ display: 'flex', marginTop: '26px', justifyContent: 'space-between' }}>
         <div className={styles.boxCon} style={{ width: '49.2%' }}>
           <div style={{ fontSize: '22px' }}>项目状态统计</div>
-          <div style={{ height: '300px' }}>
+          <div style={{ height: '400px' }}>
             {data?.status_chart?.length > 0 && <PieChartModule data={pieData} />}
           </div>
         </div>
@@ -95,7 +102,7 @@ const Statistic = props => {
               buttonStyle="solid"
             />
           </div>
-          <div style={{ height: '300px' }}>{typeData && <BarChartModule {...barData} />}</div>
+          <div style={{ height: '400px' }}>{typeData && <BarChartModule {...barData} />}</div>
         </div>
       </div>
     </div>

+ 19 - 11
src/pages/PurchaseAdmin/PurchaseList/DailyRecord/components/RecordDetail.js

@@ -1,7 +1,8 @@
 import { Button, Col, Form, Input, Modal, Row, Select, Space } 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 moment from 'moment';
 
 const RecordDetailModal = ({
   detail,
@@ -12,15 +13,22 @@ const RecordDetailModal = ({
   onOk,
   onCancel,
 }) => {
+  const data = useMemo(() => {
+    if (detail?.length > 0) {
+      const data = { name: '', time: '' };
+      data.name = detail[0].author_name || '';
+      data.time = detail[0].c_time ? moment(detail[0].c_time).format('YYYY-MM-DD HH-mm') : '';
+      return data;
+    }
+  }, [detail]);
+
   const RenderItem = item => {
     return (
-      <div className={styles.itemCon}>
-        <div>项目名称:那地方那看来你付款烂了放哪</div>
-        <div>项目名称:那地方那看来你付款烂了放哪</div>
-        <div>
-          项目名称:那地方那看来你付款烂了放哪那地方那看来你付款烂了放哪那地方那看来你付款烂了放哪那地方那看来你付款烂了放哪
-        </div>
-      </div>
+      <Space direction="vertical" className={styles.itemCon}>
+        <div>项目名称:{item.code_id}</div>
+        <div>日志概述:{item.title}</div>
+        <div>日志详情:{item.content}</div>
+      </Space>
     );
   };
 
@@ -34,11 +42,11 @@ const RecordDetailModal = ({
       footer={null}
     >
       <div className={styles.titleContent}>
-        <span className={styles.title}>管理员的金科环境项目日志</span>
-        <span>1999-99-99 09:90</span>
+        <span className={styles.title}>{data?.name}的金科环境项目日志</span>
+        <span>{data?.time}</span>
       </div>
       <Space direction="vertical" size={16} className={styles.detailContent}>
-        {[1, 2, 3].map(item => RenderItem())}
+        {detail?.map(item => RenderItem(item))}
       </Space>
     </Modal>
   );

+ 11 - 5
src/pages/PurchaseAdmin/PurchaseList/DailyRecord/components/WriteRecordModal.js

@@ -4,15 +4,22 @@ 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 WriteRecordModal = ({ detail, visible, user, projects, loading = false, onOk, onCancel }) => {
   const [form] = Form.useForm();
   const defaultData = { code_id: '', title: '', content: '' };
   const [list, setList] = useState([defaultData]);
+  const [name, setName] = useState();
   // console.log(user, list);
 
   useEffect(() => {
-    if (!visible) setList([defaultData]);
-  }, [visible]);
+    if (detail?.length > 0) {
+      setList(detail);
+      setName(detail[0].author_name);
+    } else {
+      setList([defaultData]);
+      setName(user.CName);
+    }
+  }, [detail, user]);
 
   const handleAddClick = () => {
     setList([...list, defaultData]);
@@ -30,7 +37,6 @@ const WriteRecordModal = ({ visible, user, projects, loading = false, onOk, onCa
     newList.splice(idx, 1);
     setList(newList);
   };
-  // console.log('00000000000---------', list);
 
   const handleOk = () => {
     onOk(list);
@@ -49,7 +55,7 @@ const WriteRecordModal = ({ visible, user, projects, loading = false, onOk, onCa
         <Form.Item
           label="日志标题"
           name="memberID"
-          initialValue={`${user.CName}的金科环境项目日志`}
+          initialValue={`${name}的金科环境项目日志`}
           rules={[{ required: true, message: '请选择成员' }]}
         >
           <Input />

+ 1 - 0
src/pages/PurchaseAdmin/PurchaseList/DailyRecord/components/index.less

@@ -30,6 +30,7 @@
   }
 }
 .detailContent {
+  width: 100%;
   .itemCon {
     width: 100%;
     padding: 10px;

+ 44 - 20
src/pages/PurchaseAdmin/PurchaseList/DailyRecord/index.js

@@ -1,4 +1,4 @@
-import { Button, DatePicker, Space, Table } from 'antd';
+import { Button, DatePicker, Space, Table, message } from 'antd';
 import { useEffect, useState } from 'react';
 import WriteRecordModal from './components/WriteRecordModal';
 import { connect } from 'dva';
@@ -15,6 +15,7 @@ import {
 import record from './models/record';
 import { log } from 'lodash-decorators/utils';
 import moment from 'moment';
+import { async } from '@antv/x6/lib/registry/marker/async';
 
 const DailyRecord = props => {
   const { currentUser, projects, dispatch } = props;
@@ -23,32 +24,37 @@ const DailyRecord = props => {
   const [writeVisible, setWriteVisible] = useState(false);
   const [detailVisible, setDetailVisible] = useState(false);
   const [selectedLogID, setselectedLogID] = useState('');
+  const [logDetail, setLogDetail] = useState([]);
 
   // 请求列表
   const { data, run, loading } = useRequest(date => approvalLogOwnList(date));
 
   // 查询日志详情
-  const { data: logDetail, run: runDetail, loading: detailLoading } = useRequest(
-    logID => approvalLogDetail(logID),
-    {
-      manual: true,
-    }
-  );
+  // const { data: logDetail, run: runDetail, loading: detailLoading } = useRequest(
+  //   logID => approvalLogDetail(logID),
+  //   {
+  //     manual: true,
+  //     onSuccess: () => {
+  //       setDetailVisible(true);
+  //     },
+  //   }
+  // );
+  console.log('-----------', logDetail);
 
-  // 删除日志
+  // 添加日志
   const { run: runAdd } = useRequest(approvalAddLog, {
     manual: true,
     onSuccess: () => {
-      message('删除日志成功');
+      message.success('添加日志成功');
       run();
     },
   });
 
-  // 添加日志
+  // 删除日志
   const { run: runDelete } = useRequest(approvalDeleteLog, {
     manual: true,
     onSuccess: () => {
-      message('添加日志成功');
+      message.success('删除日志成功');
       run();
     },
   });
@@ -57,14 +63,31 @@ const DailyRecord = props => {
   const { run: runEdit } = useRequest(approvalEditLog, {
     manual: true,
     onSuccess: () => {
-      message('编辑日志成功');
-      run();
+      message.success('编辑日志成功');
+      setWriteVisible(false);
+      // run();
     },
   });
 
-  const toDetail = record => {
-    console.log(record);
-    runDetail(record.log_id);
+  const toDetail = async log_id => {
+    const data = await approvalLogDetail(log_id);
+    console.log(data);
+    setLogDetail(data);
+    setDetailVisible(true);
+    // runDetail(log_id);
+  };
+  const toEdit = async log_id => {
+    const data = await approvalLogDetail(log_id);
+    console.log(data);
+    setLogDetail(data);
+    setWriteVisible(true);
+    // runDetail(log_id);
+  };
+
+  const editLog = list => {
+    if (list?.length == 0) return;
+    const params = { id: list[0].log_id, data: list };
+    runEdit(params);
   };
 
   const columns = [
@@ -98,9 +121,9 @@ const DailyRecord = props => {
       render: record => {
         return (
           <Space>
-            <a>编辑</a>
-            <a onClick={() => toDetail(record)}>详情</a>
-            <a>删除</a>
+            <a onClick={() => toEdit(record.log_id)}>编辑</a>
+            <a onClick={() => toDetail(record.log_id)}>详情</a>
+            <a onClick={() => runDelete(record.log_id)}>删除</a>
           </Space>
         );
       },
@@ -131,10 +154,11 @@ const DailyRecord = props => {
       </div>
       <Table columns={columns} dataSource={data?.list} pagination={data?.pagination} />
       <WriteRecordModal
+        detail={logDetail}
         visible={writeVisible}
         user={currentUser}
         projects={projects}
-        onOk={runAdd}
+        onOk={logDetail ? editLog : runAdd}
         onCancel={() => setWriteVisible(false)}
       />
       <RecordDetailModal

+ 1 - 1
src/services/record.js

@@ -20,7 +20,7 @@ export async function approvalDeleteLog(params) {
 export async function approvalEditLog(params) {
   return request(`/api/v2/approval/log/${params.id}`, {
     method: 'PUT',
-    body: params,
+    body: params.data,
   });
 }
 // 请求个人日志列表