Эх сурвалжийг харах

Merge branch 'work20230919' of http://120.55.44.4:10080/xujunjie/WorkloadWeb into work20230919

xujunjie 1 жил өмнө
parent
commit
c6c3d30e6e

+ 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' },

+ 19 - 13
src/pages/PurchaseAdmin/PurchaseList/Approval/List.js

@@ -104,19 +104,20 @@ function List(props) {
         return str;
       },
     },
-    {
-      title: '规模',
-      dataIndex: 'process_info',
-      render: info => {
-        let str = '';
-        if (info) {
-          const data = JSON.parse(info) || [];
-          const list = data.map(item => item.scale);
-          str = list.join('+');
-        }
-        return str;
-      },
-    },
+    // {
+    //   title: '规模',
+    //   dataIndex: 'process_info',
+    //   render: info => {
+    //     let str = '';
+    //     if (info) {
+    //       const data = JSON.parse(info) || [];
+    //       console.log('-----------------', data);
+    //       const list = data.map(item => item.scale);
+    //       str = list.join('+');
+    //     }
+    //     return str;
+    //   },
+    // },
 
     {
       title: '项目种类',
@@ -337,7 +338,10 @@ function List(props) {
         callback: () => setAddVisible(false),
       });
     }
+    // 刷新table
+    queryList({ current: 1 });
   };
+
   const onDelete = item => {
     Modal.confirm({
       title: '删除',
@@ -353,6 +357,7 @@ function List(props) {
       },
     });
   };
+
   const onSubmitAuth = item => {
     Modal.confirm({
       title: '提交审核',
@@ -371,6 +376,7 @@ function List(props) {
       },
     });
   };
+
   const queryList = page => {
     dispatch({
       type: 'approval/queryApproval',

+ 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 key={item.id} 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 - 24
src/pages/PurchaseAdmin/PurchaseList/DailyRecord/components/WriteRecordModal.js

@@ -4,35 +4,23 @@ import { useEffect, useMemo, useState } from 'react';
 import { DeleteOutlined } from '@ant-design/icons';
 import { approvalLog } from '@/services/record';
 
-const WriteRecordModal = ({
-  defaultLogList = [],
-  visible,
-  editMode = false,
-  user,
-  projects,
-  onOk,
-  onCancel,
-}) => {
-  const defaultData = { id: '', code_id: '', title: '', content: '' };
-
+const WriteRecordModal = ({ detail, visible, user, projects, loading = false, onOk, onCancel }) => {
   const [form] = Form.useForm();
+  const defaultData = { id: '', code_id: '', title: '', content: '' };
 
   const [list, setList] = useState([defaultData]);
-
-  // 每次关闭前 默认恢复到新增状态
-  useEffect(() => {
-    if (!visible) {
-      setList([defaultData]);
-    }
-  }, [visible]);
+  const [name, setName] = useState();
+  // console.log(user, list);
 
   useEffect(() => {
-    if (defaultLogList.length) {
-      setList(defaultLogList);
+    if (detail?.length > 0) {
+      setList(detail);
+      setName(detail[0].author_name);
     } else {
       setList([defaultData]);
+      setName(user.CName);
     }
-  }, [defaultLogList]);
+  }, [detail, user]);
 
   const handleAddClick = () => {
     setList([...list, defaultData]);
@@ -83,12 +71,11 @@ const WriteRecordModal = ({
         width="100%"
         style={{ marginBottom: 20 }}
         form={form}
-        disabled={!editMode}
       >
         <Form.Item
           label="日志标题"
           name="memberID"
-          initialValue={`${user.CName}的金科环境项目日志`}
+          initialValue={`${name}的金科环境项目日志`}
           rules={[{ required: true, message: '请选择成员' }]}
         >
           <Input />
@@ -105,7 +92,7 @@ const WriteRecordModal = ({
               idx={idx}
               projects={projects}
               data={item}
-              showDeleteIcon={idx !== 0 && editMode}
+              showDeleteIcon={idx !== 0}
               onChange={handleChangeItem}
               onDelete={handleDelItem}
             />

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

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

+ 65 - 55
src/pages/PurchaseAdmin/PurchaseList/DailyRecord/index.js

@@ -16,24 +16,25 @@ 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 { confirm } = Modal;
 
 const DailyRecord = props => {
   const { currentUser, projects, loading: propsLoading, dispatch } = props;
 
-  const [date, setDate] = useState({});
-  const [pageInfo, setPageInfo] = useState({ current: 1, pageSize: 10, total: 999 });
+  const [queryListParams, setQueryListParams] = useState({ current: 1, pageSize: 9 });
+  const [pageInfo, setPageInfo] = useState({ current: 1, pageSize: 9, total: 999 });
   const [writeVisible, setWriteVisible] = useState(false);
   const [detailVisible, setDetailVisible] = useState(false);
-  const [editMode, setEditMode] = useState(false);
   const [selectedLogID, setselectedLogID] = useState('');
+  const [logDetail, setLogDetail] = useState([]);
 
   const [mockLogDetail, setMockLogDetail] = useState([]);
 
   // 请求列表
   const { data, run, loading: listLoading } = useRequest(approvalLogOwnList, {
-    defaultParams: [{ ...date, ...pageInfo }],
+    defaultParams: [{ ...queryListParams }],
     onSuccess: data => {
       if (data?.pagination) {
         setPageInfo(data.pagination);
@@ -42,12 +43,16 @@ const DailyRecord = props => {
   });
 
   // 查询日志详情
-  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, loading: addLoading } = useRequest(approvalAddLog, {
@@ -55,16 +60,16 @@ const DailyRecord = props => {
     onSuccess: () => {
       message.success('添加日志成功');
       setWriteVisible(false);
-      run();
+      run(queryListParams);
     },
   });
 
   // 删除日志
-  const { run: runDelete, loading: deleteLoading } = useRequest(logID => approvalDeleteLog(logID), {
+  const { run: runDelete, loading: deleteLoading } = useRequest(approvalDeleteLog, {
     manual: true,
     onSuccess: () => {
       message.success('删除日志成功');
-      run();
+      run({ currentPage: 1, pageSize: 9 });
     },
   });
 
@@ -73,10 +78,32 @@ const DailyRecord = props => {
     manual: true,
     onSuccess: () => {
       message.success('编辑日志成功');
-      run();
+      setWriteVisible(false);
+      run(queryListParams);
     },
   });
 
+  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 allLoading = useMemo(() => {
     const loadingList = [propsLoading, listLoading, deleteLoading, addLoading, editLoading];
@@ -86,32 +113,6 @@ const DailyRecord = props => {
     return false;
   }, [propsLoading, listLoading, deleteLoading, addLoading, editLoading]);
 
-  const editLog = record => {
-    setWriteVisible(true);
-    setEditMode(true);
-    setMockLogDetail([
-      {
-        id: 'gsdfgZ',
-        code_id: 12,
-        title: 'mock',
-        content: 'mock mock mock mock mock mock mock mock',
-      },
-      { id: 'bnsrqre', code_id: 13, title: 'mock', content: 'mock mock ' },
-      { id: 'hnsfggrqe', code_id: 14, title: 'mock', content: 'mock mock ' },
-    ]);
-  };
-
-  const toDetail = record => {
-    // runDetail(record.log_id);
-    setWriteVisible(true);
-    setEditMode(false);
-    setMockLogDetail([
-      { id: 'gsdfgZ', code_id: 12, title: 'mock', content: 'mock mock ' },
-      { id: 'bnsrqre', code_id: 13, title: 'mock', content: 'mock mock ' },
-      { id: 'hnsfggrqe', code_id: 14, title: 'mock', content: 'mock mock ' },
-    ]);
-  };
-
   const deleteRecord = record => {
     confirm({
       title: '提示',
@@ -145,7 +146,7 @@ const DailyRecord = props => {
         if (!time) {
           return '--';
         }
-        return moment(time).format('YYYY-DD-MM HH:mm');
+        return moment(time).format('YYYY-MM-DD HH:mm');
       },
     },
     {
@@ -154,8 +155,8 @@ const DailyRecord = props => {
       render: record => {
         return (
           <Space>
-            <a onClick={() => editLog(record)}>编辑</a>
-            <a onClick={() => toDetail(record)}>详情</a>
+            <a onClick={() => toEdit(record.log_id)}>编辑</a>
+            <a onClick={() => toDetail(record.log_id)}>详情</a>
             <a onClick={() => deleteRecord(record)}>删除</a>
           </Space>
         );
@@ -173,21 +174,32 @@ const DailyRecord = props => {
   const handleDataPicked = (_date, dateString) => {
     let params = '';
     if (dateString) {
-      params = { ...pageInfo, s_time: `${dateString} 00:00:00`, e_time: `${dateString} 23:59:59` };
+      params = {
+        pageSize: 9,
+        currentPage: 1,
+        s_time: `${dateString} 00:00:00`,
+        e_time: `${dateString} 23:59:59`,
+      };
+    } else {
+      params = {
+        pageSize: 9,
+        currentPage: 1,
+      };
     }
-    run(params);
-    setDate(params);
+    setQueryListParams(params);
+  };
+
+  const handleQuery = () => {
+    run(queryListParams);
   };
 
   const handlePageChange = (page, pageSize) => {
-    console.log(page, pageSize);
     let params = '';
-    if (date) {
-      params = date;
-    }
+    params = queryListParams;
     params.currentPage = page;
     params.pageSize = pageSize;
     run(params);
+    setQueryListParams(params);
     setPageInfo({ ...pageInfo, current: page, pageSize: pageSize });
   };
 
@@ -196,7 +208,7 @@ const DailyRecord = props => {
       <div style={{ display: 'flex', justifyContent: 'space-between', marginBottom: '20px' }}>
         <Space size={24}>
           <DatePicker onChange={handleDataPicked} />
-          <Button type="primary" onClick={() => {}}>
+          <Button type="primary" onClick={handleQuery}>
             查询
           </Button>
         </Space>
@@ -204,7 +216,6 @@ const DailyRecord = props => {
           type="primary"
           onClick={() => {
             setWriteVisible(true);
-            setEditMode(true);
           }}
         >
           写日志
@@ -218,12 +229,11 @@ const DailyRecord = props => {
         />
       </Spin>
       <WriteRecordModal
-        defaultLogList={mockLogDetail}
+        detail={logDetail}
         visible={writeVisible}
-        editMode={editMode}
         user={currentUser}
         projects={projects}
-        onOk={runAdd}
+        onOk={logDetail ? editLog : runAdd}
         onCancel={() => setWriteVisible(false)}
       />
       <RecordDetailModal

+ 1 - 1
src/services/record.js

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