1
0

3 Коммитууд 64e5c785b5 ... da0e4b5277

Эзэн SHA1 Мессеж Огноо
  XuZinan da0e4b5277 文档管理 合同归档 列表 2 жил өмнө
  XuZinan aec871de12 Merge branch 'master' of http://120.55.44.4:10080/xujunjie/GtDigManageWeb 2 жил өмнө
  XuZinan 67d885e0ea oa文件列表接口 2 жил өмнө

+ 129 - 33
src/pages/FileManagement/index.js

@@ -1,4 +1,4 @@
-import React, { useReducer, useState } from 'react';
+import React, { useState } from 'react';
 import {
   Input,
   Tree,
@@ -10,45 +10,34 @@ import {
   Modal,
   Checkbox,
   TreeSelect,
-  Select,
+  Upload,
   Space,
   message,
 } from 'antd';
+import dayjs from 'dayjs';
 import { PageContainer, ProCard } from '@ant-design/pro-components';
-import { useRequest, useModel, useRef } from '@umijs/max';
+import { useRequest, useModel } from '@umijs/max';
 import {
   queryDirCreate,
   queryDirList,
   queryFileList,
+  queryOAFile,
 } from '../../services/file';
-import {
-  FolderOpenOutlined,
-  PlusCircleOutlined,
-  PlusOutlined,
-} from '@ant-design/icons';
+import { queryGetContractList } from '../../services/contract';
+import { downloadFile, getToken } from '@/utils/utils';
+import { PlusOutlined } from '@ant-design/icons';
 import AddFileModal from './components/model';
 
 const temp = [
   {
     id: 999,
     dir_name: '受控文件',
-    children: [
-      // { id: '1-1', dir_name: '文件夹1' },
-      // {
-      //   id: '1-2',
-      //   dir_name: '文件夹2',
-      //   children: [{ id: '1-2-1', dir_name: '文件夹1' }],
-      // },
-    ],
+    children: [],
   },
   {
     id: 998,
     dir_name: '部门文件',
-    children: [
-      // { id: '2-1', dir_name: '文件夹1' },
-      // { id: '2-2', dir_name: '文件夹2' },
-      // { id: '2-3', dir_name: '文件夹3' },
-    ],
+    children: [],
   },
 ];
 
@@ -73,6 +62,8 @@ function FileManagement(props) {
   const [visible, setVisible] = useState(false);
   const [id, setId] = useState();
 
+  const [fileType, setType] = useState(null);
+
   const {} = useRequest((data) => queryDirList(data), {
     onSuccess: (data) => {
       console.log(data);
@@ -83,10 +74,25 @@ function FileManagement(props) {
       console.log(result);
     },
   });
+
   const { data, loading, run } = useRequest((data) => queryFileList(data), {
     manual: true,
   });
 
+  const {
+    data: OAdata,
+    loading: OAloading,
+    run: runOA,
+  } = useRequest((data) => queryOAFile(data), { manual: true });
+
+  const {
+    data: contractData,
+    loading: contractLoading,
+    run: runContract,
+  } = useRequest((data) => queryGetContractList({ ...data, status: 3 }), {
+    manual: true,
+  });
+
   const { loading: createLoading, run: RunCreate } = useRequest(
     (data) => queryDirCreate(data),
     {
@@ -109,7 +115,41 @@ function FileManagement(props) {
   const columns = [
     { title: '文档名称', dataIndex: 'file_name' },
     { title: '上传人员', dataIndex: 'user_name' },
-    { title: '上传时间', dataIndex: 'create_time' },
+    {
+      title: '上传时间',
+      dataIndex: 'create_time',
+      render: (text) => dayjs(text).format('YYYY-MM-DD'),
+    },
+    {
+      title: '操作',
+      render: (_, record) => (
+        <>
+          <a onClick={() => onDownload(record)}>下载</a>
+          <Divider type="vertical" />
+          <a>删除</a>
+        </>
+      ),
+    },
+  ];
+
+  const OAcolumns = [
+    { title: '文档名称', dataIndex: 'name' },
+    { title: '上传人员', dataIndex: ['CreatorUser', 'CName'] },
+    {
+      title: '上传时间',
+      dataIndex: 'c_time',
+      render: (text) => dayjs(text).format('YYYY-MM-DD'),
+    },
+    {
+      title: '操作',
+      render: (_, record) => <a onClick={() => onDownloadOA(record)}>下载</a>,
+    },
+  ];
+
+  const contractColumns = [
+    { title: '文档名称', dataIndex: 'name' },
+    { title: '上传人员', dataIndex: 'created_name' },
+    { title: '上传时间', dataIndex: 'created_on' },
     {
       title: '操作',
       render: (_, record) => (
@@ -117,7 +157,6 @@ function FileManagement(props) {
           <a>下载</a>
           <Divider type="vertical" />
           <a>删除</a>
-          <a onClick={() => {}}>申请权限</a>
         </>
       ),
     },
@@ -197,8 +236,71 @@ function FileManagement(props) {
       });
   };
 
-  const handlerSelect = (SelectKeys, e) => {
-    run({ dir_id: SelectKeys[0] });
+  const handleSelect = (SelectKeys, e) => {
+    const node = e.node;
+    if (node?.classify_id == 42 || node?.classify_id == 43) {
+      setType('OA');
+      runOA({ classify_id: node.classify_id });
+    } else if (node.id == 6) {
+      setType('contract');
+      runContract({});
+    } else {
+      setType(null);
+      run({ dir_id: SelectKeys[0] });
+    }
+  };
+
+  const renderFileTable = () => {
+    let tableColumns = [];
+    let tableData = [];
+    let tableLoading = false;
+
+    switch (fileType) {
+      case 'OA':
+        tableColumns = OAcolumns;
+        tableData = OAdata?.list;
+        tableLoading = OAloading;
+        break;
+      case 'contract':
+        tableColumns = contractColumns;
+        tableData = contractData?.list;
+        tableLoading = contractLoading;
+        break;
+      default:
+        tableColumns = columns;
+        tableData = data?.list;
+        tableLoading = loading;
+        break;
+    }
+
+    return (
+      <Table
+        columns={tableColumns}
+        dataSource={tableData}
+        loading={tableLoading}
+        style={{ overflowY: 'auto' }}
+        pagination={false}
+      />
+    );
+  };
+
+  const onDownload = (record) => {
+    const token = getToken();
+    // downloadFile(
+    //   `/api/archive/v1/file/download?file_id=${record.id}&JWT-TOKEN=${token}`,
+    //   record.file_name,
+    //   false,
+    // );
+    downloadFile(
+      `http://47.96.12.136:8888/api/archive/v1/file/download?file_id=${record.id}&JWT-TOKEN=${token}`,
+      record.file_name,
+      false,
+    );
+  };
+
+  const onDownloadOA = (record) => {
+    const token = getToken();
+    downloadFile(record.url, record.name);
   };
 
   return (
@@ -210,7 +312,7 @@ function FileManagement(props) {
             expandedKeys={expandedKeys}
             onExpand={onExpand}
             treeData={treeData}
-            onSelect={handlerSelect}
+            onSelect={handleSelect}
             fieldNames={{ key: 'id', title: 'dir_name', children: 'children' }}
             filterTreeNode={filterTreeNode}
             titleRender={(item) => {
@@ -255,13 +357,7 @@ function FileManagement(props) {
             </Form.Item>
           </Form>
           <div>
-            <Table
-              columns={columns}
-              dataSource={data?.list}
-              loading={loading}
-              style={{ overflowY: 'auto' }}
-              pagination={false}
-            />
+            {renderFileTable()}
             {/* 
             <Button type="primary" onClick={() => setAddOpen(true)}>
               <PlusOutlined />

+ 6 - 1
src/services/file.js

@@ -12,9 +12,14 @@ export const queryFileList = async (data) => {
     data,
   });
 };
+// 获取OA文件列表(合同文件&投标文件)
+// params: page_size, current_page, classify_id = 42/43
+export const queryOAFile = async (data) => {
+  return await request(`/api/v1/oa/file/list`, { params: data });
+};
 export const queryDirCreate = async (data) => {
   return await request('/api/archive/v1/dir/create', {
     method: 'POST',
     data,
   });
-};
+};