张涛 1 년 전
부모
커밋
79c8872851
8개의 변경된 파일99개의 추가작업 그리고 27개의 파일을 삭제
  1. 1
    0
      .env
  2. 1
    0
      .env.production
  3. 5
    4
      src/components/Upload/UploadImage.jsx
  4. 6
    14
      src/components/Upload/request.js
  5. 24
    8
      src/pages/member/index.jsx
  6. 3
    0
      src/services/ossPolicy.js
  7. 58
    0
      src/store/oss.js
  8. 1
    1
      src/utils/request.js

+ 1
- 0
.env 파일 보기

1
+VITE_SERVER_BASE=/api/admin

+ 1
- 0
.env.production 파일 보기

1
+VITE_SERVER_BASE=http://api.crm2.njyunzhi.com/api/admin

+ 5
- 4
src/components/Upload/UploadImage.jsx 파일 보기

40
     if (info.file.status === 'done') {
40
     if (info.file.status === 'done') {
41
       setLoading(false);
41
       setLoading(false);
42
       const { url, fileType } = info.file.response;
42
       const { url, fileType } = info.file.response;
43
-      onChange(url);
43
+      onChange(info.file.response.res);
44
     }
44
     }
45
   };
45
   };
46
 
46
 
47
   const previewUrl = getRealPath ? getRealPath(value) : value;
47
   const previewUrl = getRealPath ? getRealPath(value) : value;
48
-console.log(value)
49
-console.log(previewUrl)
48
+// console.log(value)
49
+// console.log(previewUrl)
50
+console.log("propsprops",props)
50
   return (
51
   return (
51
     <Upload
52
     <Upload
52
       listType="picture-card"
53
       listType="picture-card"
55
       beforeUpload={beforeUpload}
56
       beforeUpload={beforeUpload}
56
       onChange={handleChange}
57
       onChange={handleChange}
57
     >
58
     >
58
-      {value ? <img src={value} alt="avatar" style={{ width: '100%', height: '100%' }} /> : <UploadButton loading={loading} />}
59
+      {value ? <img src={previewUrl} alt="avatar" style={{ width: '100%', height: '100%' }} /> : <UploadButton loading={loading} />}
59
     </Upload>
60
     </Upload>
60
   );
61
   );
61
 }
62
 }

+ 6
- 14
src/components/Upload/request.js 파일 보기

1
-import request from '@/utils/request';
2
 
1
 
3
-const upload = (file, fileType = 'image') => {
4
-  const formData = new FormData();
5
-  formData.append("file", file);
6
-  formData.append("fileType", fileType);
7
-  return request('/upload', {
8
-    method: 'post',
9
-    data: formData,
10
-    headers: {
11
-      'Content-Type': 'multipart/form-data',
12
-    }
13
-  });
14
-}
2
+import { uploadFile as upload } from "@/store/oss";
3
+
4
+
15
 
5
 
16
 /**
6
 /**
17
  * 上传文件
7
  * 上传文件
19
  */
9
  */
20
 export function uploadFile(params) {
10
 export function uploadFile(params) {
21
   const { file, onSuccess, onError } = params;
11
   const { file, onSuccess, onError } = params;
12
+  console.log(upload)
22
   upload(file).then((res) => {
13
   upload(file).then((res) => {
23
-    onSuccess(res, file)
14
+    console.log("resresres",res)
15
+   onSuccess({res}, file);
24
   }).catch((e) => {
16
   }).catch((e) => {
25
     onError(e)
17
     onError(e)
26
   });
18
   });

+ 24
- 8
src/pages/member/index.jsx 파일 보기

11
   const [isModalOpen, setIsModalOpen] = React.useState(false);
11
   const [isModalOpen, setIsModalOpen] = React.useState(false);
12
   const [modalTitle, setModalTitle] = React.useState("");
12
   const [modalTitle, setModalTitle] = React.useState("");
13
   const [modalObj, setModalObj] = React.useState({});
13
   const [modalObj, setModalObj] = React.useState({});
14
-
14
+  const today = moment().format("YYYY-MM-DDTHH:mm:ss");
15
+  const newToday = moment(today);
15
   const columns = [
16
   const columns = [
16
     {
17
     {
17
       title: "注册日期",
18
       title: "注册日期",
76
   const onWrite = (id) => {
77
   const onWrite = (id) => {
77
     // putTaMemberCardIdWrite().then((res) => {});
78
     // putTaMemberCardIdWrite().then((res) => {});
78
   };
79
   };
79
-const actionRef=useRef()
80
+  const actionRef = useRef();
80
 
81
 
81
-const reload=()=>{
82
-  return actionRef?.current?.reload()
83
-}
82
+  const reload = () => {
83
+    return actionRef?.current?.reload();
84
+  };
84
 
85
 
85
   return (
86
   return (
86
     <>
87
     <>
90
         // onEdit={(record) => navigate(`/member/edit?id=${record.memberId}`)}
91
         // onEdit={(record) => navigate(`/member/edit?id=${record.memberId}`)}
91
         columnOptionRender={(_, record) => {
92
         columnOptionRender={(_, record) => {
92
           const dataNum = record.taMemberCardList.reduce((total, item) => {
93
           const dataNum = record.taMemberCardList.reduce((total, item) => {
93
-            return (total += item.leftAmount);
94
+            if (!item.expireTime) {
95
+              return (total += item.leftAmount);
96
+            } else {
97
+              const endTime = moment(item.expireTime);
98
+              const expireNum = endTime.diff(newToday, "minutes");
99
+              console.log(expireNum)
100
+              if (expireNum >= 5) {
101
+                return true;
102
+              }else{
103
+                return false
104
+              }
105
+            }
94
           }, 0);
106
           }, 0);
107
+          console.log(dataNum)
108
+          console.log(record)
95
           return [
109
           return [
96
             <Button
110
             <Button
97
               key="A2"
111
               key="A2"
98
               style={{ padding: 0 }}
112
               style={{ padding: 0 }}
99
               type="link"
113
               type="link"
100
-              onClick={() => navigate(`/custom/member/edit?id=${record.memberId}`)}
114
+              onClick={() =>
115
+                navigate(`/custom/member/edit?id=${record.memberId}`)
116
+              }
101
             >
117
             >
102
               详情
118
               详情
103
             </Button>,
119
             </Button>,
134
         modalTitle={modalTitle}
150
         modalTitle={modalTitle}
135
         modalObj={modalObj}
151
         modalObj={modalObj}
136
         reload={reload}
152
         reload={reload}
137
-      /> 
153
+      />
138
     </>
154
     </>
139
   );
155
   );
140
 };
156
 };

+ 3
- 0
src/services/ossPolicy.js 파일 보기

1
+import request from "@/utils/request";
2
+
3
+export const getPolicy = () => request("/upload/policy");

+ 58
- 0
src/store/oss.js 파일 보기

1
+import axios from "axios";
2
+import { getPolicy as getOssPolicy } from "@/services/ossPolicy";
3
+
4
+let oss;
5
+let expire = 0;
6
+
7
+const resetPolicy = () => {
8
+  return getOssPolicy().then((res) => {
9
+    oss = res;
10
+    expire = res.expire;
11
+
12
+    return oss;
13
+  });
14
+}
15
+
16
+const getOssAsync = () => {
17
+  const current = (new Date()).getTime() / 1000;
18
+  // 3s 缓冲
19
+  if (expire <= current + 3) {
20
+    // 说明快到期了
21
+    return resetPolicy();
22
+  } else {
23
+    return Promise.resolve(oss);
24
+  }
25
+}
26
+
27
+const request = axios.create();
28
+const uploadFile = file => {
29
+  return getOssAsync().then(oss => {
30
+    const formData = new FormData();
31
+    const fileName= (new Date).getTime() + '_' + file.name;
32
+
33
+    formData.append("OSSAccessKeyId", oss.accessId);
34
+    formData.append("signature", oss.signature);
35
+    formData.append("policy", oss.policy);
36
+    formData.append("key", oss.dir + fileName);
37
+    formData.append("success_action_status", 200);
38
+    formData.append("file", file);
39
+  
40
+    return request(oss.host, {
41
+      method: "post",
42
+      data: formData,
43
+      headers: {
44
+        "Content-Type": "multipart/form-data",
45
+      },
46
+    }).then(res => {
47
+      console.log(res);
48
+
49
+      if (res.status == 200) {
50
+        return `${oss.customDomain}/${oss.dir}${fileName}`;
51
+      }
52
+    });
53
+  });
54
+}
55
+
56
+export {
57
+  uploadFile,
58
+}

+ 1
- 1
src/utils/request.js 파일 보기

7
   baseURL: process.env.NODE_ENV == "development" ? "/api/admin" : SERVER_BASE,
7
   baseURL: process.env.NODE_ENV == "development" ? "/api/admin" : SERVER_BASE,
8
   timeout: 10000,
8
   timeout: 10000,
9
 });
9
 });
10
-
10
+console.log(process.env.NODE_ENV)
11
 // 添加请求拦截器
11
 // 添加请求拦截器
12
 instance.interceptors.request.use(
12
 instance.interceptors.request.use(
13
   function (config) {
13
   function (config) {