dingxin 5 лет назад
Родитель
Сommit
67548a6a58
2 измененных файлов: 58 добавлений и 21 удалений
  1. 1
    0
      package.json
  2. 57
    21
      src/pages/activity/ActivityList.jsx

+ 1
- 0
package.json Просмотреть файл

54
     "omit.js": "^1.0.2",
54
     "omit.js": "^1.0.2",
55
     "path-to-regexp": "^3.0.0",
55
     "path-to-regexp": "^3.0.0",
56
     "qrcode.react": "^0.9.3",
56
     "qrcode.react": "^0.9.3",
57
+    "qrcodejs2": "0.0.2",
57
     "qs": "^6.7.0",
58
     "qs": "^6.7.0",
58
     "react": "^16.8.6",
59
     "react": "^16.8.6",
59
     "react-amap": "^1.2.8",
60
     "react-amap": "^1.2.8",

+ 57
- 21
src/pages/activity/ActivityList.jsx Просмотреть файл

1
 import React, { useState, useEffect } from 'react';
1
 import React, { useState, useEffect } from 'react';
2
 import { Form, Input, Button, Icon, Select, message, Table, Divider, Tag, Pagination, Modal, DatePicker } from 'antd';
2
 import { Form, Input, Button, Icon, Select, message, Table, Divider, Tag, Pagination, Modal, DatePicker } from 'antd';
3
 import { FormattedMessage } from 'umi-plugin-react/locale';
3
 import { FormattedMessage } from 'umi-plugin-react/locale';
4
-import styles from '../style/GoodsList.less';
5
 import router from 'umi/router';
4
 import router from 'umi/router';
6
 import moment from 'moment';
5
 import moment from 'moment';
6
+import QRCode from 'qrcodejs2'
7
+import styles from '../style/GoodsList.less';
7
 import SelectCity from '../../components/SelectButton/CitySelect'
8
 import SelectCity from '../../components/SelectButton/CitySelect'
8
 import BuildSelect from '../../components/SelectButton/BuildSelect'
9
 import BuildSelect from '../../components/SelectButton/BuildSelect'
9
 import apis from '../../services/apis';
10
 import apis from '../../services/apis';
41
     });
42
     });
42
   }
43
   }
43
 
44
 
45
+  const newQrcode = row => {
46
+    const x = new XMLHttpRequest();
47
+    const resourceUrl = row.qrCode
48
+    x.open('GET', resourceUrl, true);
49
+    x.responseType = 'blob';
50
+    x.onload = function(e) {
51
+      const url = window.URL.createObjectURL(x.response)
52
+      const a = document.createElement('a');
53
+      a.href = url;
54
+      a.style.display = 'none'
55
+      a.download = '活动二维码.png';
56
+      a.click();
57
+    }
58
+    x.send();
59
+  }
60
+
61
+
62
+  function download(data) {
63
+    if (!data) {
64
+      return
65
+    }
66
+
67
+    const url = URL.createObjectURL(data)
68
+    const link = document.createElement('a')
69
+    link.style.display = 'none'
70
+    link.href = url
71
+    link.setAttribute('download', '活动二维码.png')
72
+    document.body.append(link)
73
+    link.click()
74
+  }
75
+
76
+
44
   /**
77
   /**
45
    *
78
    *
46
    *
79
    *
59
       dataIndex: 'startDate',
92
       dataIndex: 'startDate',
60
       key: 'startDate',
93
       key: 'startDate',
61
       align: 'center',
94
       align: 'center',
62
-      render: (x, row) => <><span>{`${moment(row.startDate).format('YYYY-MM-DD')} —— ${moment(row.endDate).format('YYYY-MM-DD')}`}</span></>
95
+      render: (x, row) => <><span>{`${moment(row.startDate).format('YYYY-MM-DD')} —— ${moment(row.endDate).format('YYYY-MM-DD')}`}</span></>,
63
     },
96
     },
64
     {
97
     {
65
       title: '已参加人数',
98
       title: '已参加人数',
90
       dataIndex: 'activityStatus',
123
       dataIndex: 'activityStatus',
91
       key: 'activityStatus',
124
       key: 'activityStatus',
92
       align: 'center',
125
       align: 'center',
93
-      render: activityStatus => <><span>{activityStatus == 0 ? "进行中" : activityStatus == 1 ? '未开始' : '已结束'}</span></>,
126
+      render: activityStatus => <><span>{activityStatus == 0 ? '进行中' : activityStatus == 1 ? '未开始' : '已结束'}</span></>,
94
     },
127
     },
95
     {
128
     {
96
       title: '操作',
129
       title: '操作',
100
       render: (x, row) => (
133
       render: (x, row) => (
101
         <>
134
         <>
102
           <AuthButton name="admin.SignList.get" noRight={null}>
135
           <AuthButton name="admin.SignList.get" noRight={null}>
103
-            <span style={{ color: '#1990FF', cursor: 'pointer'}} onClick={getSignList.bind(this, row.dynamicId)}>{row.isEnlist == '1' || row.isEnlist == '2' ? "报名记录" : ""}<Icon type="snippets" className={styles.shoppingCart} /></span>
136
+            <span style={{ color: '#1990FF', cursor: 'pointer' }} onClick={getSignList.bind(this, row.dynamicId)}>{row.isEnlist == '1' || row.isEnlist == '2' ? '报名记录' : ''}<Icon type="snippets" className={styles.shoppingCart} /></span>
104
           </AuthButton>
137
           </AuthButton>
105
           <AuthButton name="admin.buildingDynamic.send.dynamicId.put" noRight={null}>
138
           <AuthButton name="admin.buildingDynamic.send.dynamicId.put" noRight={null}>
106
-            <span style={{ color: '#1990FF', cursor: 'pointer' }} onClick={sendOrPublicDynamic.bind(this,row)}>{ row.status === 1 ? '取消发布' : '发布' }<Icon type="close-circle" className={styles.edit} /></span>
139
+            <span style={{ color: '#1990FF', cursor: 'pointer' }} onClick={sendOrPublicDynamic.bind(this, row)}>{ row.status === 1 ? '取消发布' : '发布' }<Icon type="close-circle" className={styles.edit} /></span>
107
           </AuthButton>
140
           </AuthButton>
108
           <AuthButton name="admin.buildingDynamic.finish.put" noRight={null}>
141
           <AuthButton name="admin.buildingDynamic.finish.put" noRight={null}>
109
-            {row.isEnlist == 1 && <span style={{ color: '#1990FF', cursor: 'pointer' }} onClick={finishDynamic.bind(this,row)}>结束活动<Icon type="poweroff" className={styles.edit} /></span>}
142
+            {row.isEnlist == 1 && <span style={{ color: '#1990FF', cursor: 'pointer' }} onClick={finishDynamic.bind(this, row)}>结束活动<Icon type="poweroff" className={styles.edit} /></span>}
110
           </AuthButton>
143
           </AuthButton>
111
           <AuthButton name="admin.buildingDynamic.update.put" noRight={null}>
144
           <AuthButton name="admin.buildingDynamic.update.put" noRight={null}>
112
             <span style={{ color: '#1990FF', marginRight: '20px', cursor: 'pointer' }} onClick={topDynamic(row)}>{ row.weight === 1 ? '取消置顶' : '置顶' }<Icon type="vertical-align-top" className={styles.edit} /></span>
145
             <span style={{ color: '#1990FF', marginRight: '20px', cursor: 'pointer' }} onClick={topDynamic(row)}>{ row.weight === 1 ? '取消置顶' : '置顶' }<Icon type="vertical-align-top" className={styles.edit} /></span>
113
             {row.isEnlist != 2 && <span style={{ color: '#FF925C', cursor: 'pointer' }} onClick={toEditGoods(row.dynamicId)}>编辑<Icon type="form" className={styles.edit} /></span>}
146
             {row.isEnlist != 2 && <span style={{ color: '#FF925C', cursor: 'pointer' }} onClick={toEditGoods(row.dynamicId)}>编辑<Icon type="form" className={styles.edit} /></span>}
114
           </AuthButton>
147
           </AuthButton>
148
+          <span style={{ color: '#1990FF', cursor: 'pointer' }} onClick={newQrcode.bind(this, row)}>下载二维码<Icon type="qrcode" className={styles.shoppingCart} /></span>
115
         </>
149
         </>
116
-      )
150
+      ),
117
     },
151
     },
118
   ];
152
   ];
119
 
153
 
132
           okText: '确定',
166
           okText: '确定',
133
           cancelText: '取消',
167
           cancelText: '取消',
134
           onOk() {
168
           onOk() {
135
-              request({ ...apis.activity.finish, data: {dynamicId: row.dynamicId, top: "" } }).then(data => {
169
+              request({ ...apis.activity.finish, data: { dynamicId: row.dynamicId, top: '' } }).then(data => {
136
                   console.log(data)
170
                   console.log(data)
137
                   message.info('操作成功!')
171
                   message.info('操作成功!')
138
                   getList({ pageNum: 1, pageSize: 10 })
172
                   getList({ pageNum: 1, pageSize: 10 })
147
 //   置顶
181
 //   置顶
148
   const topDynamic = row => () => {
182
   const topDynamic = row => () => {
149
       const weight = Math.abs(row.weight - 1)
183
       const weight = Math.abs(row.weight - 1)
150
-      request({ ...apis.activity.weight, params: {dynamicId: row.dynamicId, weight} }).then(data => {
184
+      request({ ...apis.activity.weight, params: { dynamicId: row.dynamicId, weight } }).then(data => {
151
           console.log(data)
185
           console.log(data)
152
           message.info('操作成功!')
186
           message.info('操作成功!')
153
           getList({ pageNum: 1, pageSize: 10 })
187
           getList({ pageNum: 1, pageSize: 10 })
156
           message.info(err.msg || err.message)
190
           message.info(err.msg || err.message)
157
       })
191
       })
158
   }
192
   }
159
-  
193
+
160
   const sendOrPublicDynamic = row => {
194
   const sendOrPublicDynamic = row => {
161
       if (row.status === 1) {
195
       if (row.status === 1) {
162
           cancelDynamic(row)
196
           cancelDynamic(row)
164
           sendDynamic(row)
198
           sendDynamic(row)
165
       }
199
       }
166
   }
200
   }
167
-  
201
+
168
   // 取消活动
202
   // 取消活动
169
   const cancelDynamic = row => {
203
   const cancelDynamic = row => {
170
-      request({ ...apis.activity.cancel, urlData: {id: row.dynamicId}}).then((data) => {
204
+      request({ ...apis.activity.cancel, urlData: { id: row.dynamicId } }).then(data => {
171
           message.info('操作成功!')
205
           message.info('操作成功!')
172
           getList({ pageNum: 1, pageSize: 10 })
206
           getList({ pageNum: 1, pageSize: 10 })
173
-      }).catch((err) => {
207
+      }).catch(err => {
174
           console.log(err)
208
           console.log(err)
175
           message.info(err.msg || err.message)
209
           message.info(err.msg || err.message)
176
       })
210
       })
177
   }
211
   }
178
-  
179
-  //发布活动
212
+
213
+  // 发布活动
180
   const sendDynamic = row => {
214
   const sendDynamic = row => {
181
-      request({ ...apis.activity.send, urlData: {id: row.dynamicId}}).then((data) => {
215
+      request({ ...apis.activity.send, urlData: { id: row.dynamicId } }).then(data => {
182
           message.info('操作成功!')
216
           message.info('操作成功!')
183
           getList({ pageNum: 1, pageSize: 10 });
217
           getList({ pageNum: 1, pageSize: 10 });
184
-      }).catch((err) => {
218
+      }).catch(err => {
185
           console.log(err)
219
           console.log(err)
186
           message.info(err.msg || err.message)
220
           message.info(err.msg || err.message)
187
       })
221
       })
188
   }
222
   }
189
-  
223
+
190
   const changePageNum = pageNumber => {
224
   const changePageNum = pageNumber => {
191
       getList({ pageNum: pageNumber, pageSize: 10 })
225
       getList({ pageNum: pageNumber, pageSize: 10 })
192
   }
226
   }
202
     });
236
     });
203
   }
237
   }
204
 
238
 
205
-   //重置搜索
239
+   // 重置搜索
206
    function handleReset() {
240
    function handleReset() {
207
     props.form.resetFields();
241
     props.form.resetFields();
208
   }
242
   }
212
   return (
246
   return (
213
 
247
 
214
     <>
248
     <>
249
+      {/* style={{ display: 'none' }} */}
250
+      <div id="qrcode"></div>
215
       <Form layout="inline" onSubmit={e => handleSubmit(e, props)}>
251
       <Form layout="inline" onSubmit={e => handleSubmit(e, props)}>
216
         <Form.Item>
252
         <Form.Item>
217
           {getFieldDecorator('cityId')(
253
           {getFieldDecorator('cityId')(
233
         </Form.Item>
269
         </Form.Item>
234
         <Form.Item>
270
         <Form.Item>
235
           {getFieldDecorator('time')(
271
           {getFieldDecorator('time')(
236
-            <DatePicker />
272
+            <DatePicker />,
237
           )}
273
           )}
238
         </Form.Item>
274
         </Form.Item>
239
         <Form.Item>
275
         <Form.Item>
258
       </AuthButton>
294
       </AuthButton>
259
       <Table dataSource={data.list} columns={columns} pagination={false} rowKey="activityList"/>
295
       <Table dataSource={data.list} columns={columns} pagination={false} rowKey="activityList"/>
260
       <div style={{ display: 'flex', justifyContent: 'flex-end', marginTop: '30px' }}>
296
       <div style={{ display: 'flex', justifyContent: 'flex-end', marginTop: '30px' }}>
261
-       <Pagination showQuickJumper defaultCurrent={1} total={data.total} onChange={(e) => changePageNum(e)} />
297
+       <Pagination showQuickJumper defaultCurrent={1} total={data.total} onChange={e => changePageNum(e)} />
262
       </div>
298
       </div>
263
     </>
299
     </>
264
   )
300
   )