魏超 5 years ago
parent
commit
cede5fb9aa

+ 528
- 0
src/pages/activity/groupActivity/helpRecord.jsx View File

@@ -0,0 +1,528 @@
1
+import React, { useState, useEffect } from 'react';
2
+import { Form, Icon, Input, Button, DatePicker, Select, Card, Row, Col, Pagination, Alert, Table, Avatar, Radio, Modal, Descriptions } from 'antd';
3
+import moment from 'moment';
4
+import request from '../../../utils/request';
5
+import apis from '../../../services/apis';
6
+import router from 'umi/router';
7
+import BuildSelect from '../../../components/SelectButton/BuildSelect'
8
+import AuthButton from '@/components/AuthButton';
9
+
10
+
11
+const { Option } = Select;
12
+// eslint-disable-next-line @typescript-eslint/no-unused-vars
13
+const { Meta } = Card;
14
+
15
+/**
16
+ * 拼团者弹框
17
+ */
18
+class InviteTable extends React.Component {
19
+  constructor(props) {
20
+    super(props);
21
+    this.state = {
22
+      dataSource: { records: [] },
23
+      visibleData: { visible: false, customerId: '', realtyConsultant: '' },
24
+    }
25
+  }
26
+
27
+  // 挂载之后
28
+  componentDidMount () {
29
+    const { customerId } = this.state.visibleData
30
+    this.getList({ helpRecordInitiateId: customerId, pageNumber: 1, pageSize: 5 })
31
+  }
32
+
33
+  componentDidUpdate (preProps, preState) {
34
+    const { customerId } = this.state.visibleData
35
+    if (this.props.visibleData.customerId !== preState.visibleData.customerId) {
36
+      this.getList({ helpRecordInitiateId: customerId, pageNumber: 1, pageSize: 5 })
37
+      this.setState({ visibleData: this.props.visibleData });
38
+    }
39
+  }
40
+
41
+  // 弹框确定按钮
42
+  // eslint-disable-next-line react/sort-comp
43
+  handleOk () {
44
+    this.setState({ visibleData: { visible: false, customerId: '', realtyConsultant: '' } })
45
+  }
46
+
47
+  // 弹框取消按钮
48
+  handleCancel () {
49
+    this.setState({ visibleData: { visible: false, customerId: '', realtyConsultant: '' } })
50
+  }
51
+
52
+  getList (params) {
53
+    request({ ...apis.groupActivity.shareSuccList, params: { ...params } }).then(res => {
54
+      this.setState({ dataSource: res })
55
+    }).catch(err => {
56
+      // eslint-disable-next-line no-unused-expressions
57
+      <Alert
58
+        style={{
59
+          marginBottom: 24,
60
+        }}
61
+        message={err}
62
+        type="error"
63
+        showIcon
64
+      />
65
+    })
66
+  }
67
+
68
+  // 分页
69
+  onChange (pageNum) {
70
+    this.getList({ pageNumber: pageNum, pageSize: 5 })
71
+  }
72
+
73
+  render () {
74
+    const columns = [
75
+      {
76
+        title: '用户姓名',
77
+        dataIndex: 'name',
78
+        key: 'name',
79
+        align: 'center',
80
+      },
81
+      {
82
+        title: '手机号',
83
+        dataIndex: 'phone',
84
+        key: 'phone',
85
+        align: 'center',
86
+        render: text => <a>{text}</a>,
87
+      },
88
+      {
89
+        title: '开团时间',
90
+        dataIndex: 'createDate',
91
+        key: 'createDate',
92
+        align: 'center',
93
+      },
94
+    ]
95
+    return (
96
+      <>
97
+        <Modal
98
+          title="参团者"
99
+          destroyOnClose="true"
100
+          width={900}
101
+          footer={null}
102
+          visible={this.state.visibleData.visible}
103
+          // onOk={() => this.handleOk()}
104
+          onCancel={(e) => this.handleCancel(e)}
105
+        >
106
+          <Table rowKey="independent" dataSource={this.state.dataSource.records} columns={columns} pagination={{ total: this.state.dataSource.total, onChange: e => this.onChange(e) }} />
107
+        </Modal>
108
+      </>
109
+    );
110
+  }
111
+}
112
+
113
+
114
+
115
+
116
+
117
+
118
+
119
+/**
120
+ * 拼团者弹框
121
+ */
122
+class Verifier extends React.Component {
123
+  constructor(props) {
124
+    super(props);
125
+    this.state = {
126
+      helpRecordInitiateId: { id: '' },
127
+      visibleData: { visible: false, customerId: '', realtyConsultant: '', helpRecordInitiateId: '' },
128
+    }
129
+  }
130
+
131
+  // 挂载之后
132
+  componentDidMount () {
133
+    const { customerId } = this.state.visibleData
134
+    this.getList({ helpRecordInitiateId: customerId, pageNumber: 1, pageSize: 5 })
135
+  }
136
+
137
+  componentDidUpdate (preProps, preState) {
138
+    const { customerId } = this.state.visibleData
139
+    console.log('this.state.visibleData', this.state.visibleData)
140
+    if (this.props.visibleData.customerId !== preState.visibleData.customerId) {
141
+      this.getList({ helpRecordInitiateId: customerId, pageNumber: 1, pageSize: 5 })
142
+      this.setState({ visibleData: this.props.visibleData });
143
+    }
144
+  }
145
+
146
+  // 弹框确定按钮
147
+  // eslint-disable-next-line react/sort-comp
148
+  handleOk () {
149
+    this.setState({ visibleData: { visible: false, customerId: '', realtyConsultant: '' } })
150
+  }
151
+
152
+  // 弹框取消按钮
153
+  handleCancel () {
154
+    this.setState({ visibleData: { visible: false, customerId: '', realtyConsultant: '' } })
155
+  }
156
+
157
+  getList (params) {
158
+    request({ ...apis.groupActivity.shareSuccList, params: { ...params } }).then(res => {
159
+        console.log(res);
160
+      this.setState({ dataSource: res })
161
+    }).catch(err => {
162
+      // eslint-disable-next-line no-unused-expressions
163
+      <Alert
164
+        style={{
165
+          marginBottom: 24,
166
+        }}
167
+        message={err}
168
+        type="error"
169
+        showIcon
170
+      />
171
+    })
172
+  }
173
+
174
+  // eslint-disable-next-line class-methods-use-this
175
+  verify(e) {
176
+    console.log('111', e.target.value)
177
+  }
178
+
179
+  // eslint-disable-next-line class-methods-use-this
180
+  verification(e) {
181
+    console.log('this.state.visibleData', this.state.visibleData)
182
+      alert(1)
183
+  }
184
+
185
+  render () {
186
+    return (
187
+      <>
188
+        <Modal
189
+          title="核销"
190
+          destroyOnClose="true"
191
+          width={300}
192
+          footer={null}
193
+          visible={this.state.visibleData.visible}
194
+          // onOk={() => this.handleOk()}
195
+          onCancel={(e) => this.handleCancel(e)}
196
+        >
197
+          <div><span>核销码:<input onChange={this.verify.bind(this)}/></span>
198
+           <Button onClick={(e) => this.verification(e)}>立即核销</Button>
199
+          </div>
200
+        </Modal>
201
+      </>
202
+    );
203
+  }
204
+}
205
+
206
+/**
207
+ *主体列表
208
+ *
209
+ * @param {*} props
210
+ * @returns
211
+ */
212
+function body(props) {
213
+  const [gInviteData, setGInviteData] = useState({ visible: false, customerId: '', realtyConsultant: '' })
214
+
215
+  const [gVerifierData, setVerifierData] = useState({ visible: false, customerId: '', realtyConsultant: '', helpRecordInitiateId: '' })
216
+
217
+  const { getFieldDecorator, getFieldsValue } = props.form
218
+
219
+  // eslint-disable-next-line react-hooks/rules-of-hooks
220
+  const [dataSource, setDataSource] = useState({ records: [] })
221
+  // eslint-disable-next-line react-hooks/rules-of-hooks
222
+  // const [columns, setColumns] = useState(privateColumns)
223
+
224
+  // 默认成功
225
+  // eslint-disable-next-line react-hooks/rules-of-hooks
226
+  const [groupStatus, setgroupStatus] = useState('0')
227
+
228
+  // 调整归属 ============  start
229
+  // eslint-disable-next-line react-hooks/rules-of-hooks
230
+  const [gVisibleData, setGVisibleData] = useState({ visible: false, customerId: '', realtyConsultant: '' })
231
+
232
+
233
+  // 变更状态 ============= end
234
+
235
+  // eslint-disable-next-line react-hooks/rules-of-hooks
236
+  const { groupActivityId } = props.location.query
237
+  useEffect(() => {
238
+    getList({ pageNumber: 1, pageSize: 10, status: groupStatus, groupActivityId: groupActivityId })
239
+  }, [])
240
+
241
+  
242
+  function getFailList(params) {
243
+    // 网路请求
244
+    request({ ...apis.groupActivity.shareFailList, params: { ...params } }).then(res => {
245
+        console.log(res);
246
+      setDataSource(res)
247
+    }).catch(err => {
248
+      // eslint-disable-next-line no-unused-expressions
249
+      <Alert
250
+        style={{
251
+          marginBottom: 24,
252
+        }}
253
+        message={err}
254
+        type="error"
255
+        showIcon
256
+      />
257
+    })
258
+  }
259
+
260
+  function getList(params) {
261
+    // 网路请求
262
+    request({ ...apis.groupActivity.shareSuccList, params: { ...params } }).then(res => {
263
+        console.log(res);
264
+      setDataSource(res)
265
+    }).catch(err => {
266
+      // eslint-disable-next-line no-unused-expressions
267
+      <Alert
268
+        style={{
269
+          marginBottom: 24,
270
+        }}
271
+        message={err}
272
+        type="error"
273
+        showIcon
274
+      />
275
+    })
276
+  }
277
+
278
+  function displayNone() {
279
+    setGVisibleData({ visible: false, customerId: '', realtyConsultant: '' })
280
+  }
281
+
282
+  // 提交事件
283
+  function handleSubmit(e) {
284
+    displayNone()
285
+
286
+
287
+    e.preventDefault();
288
+    props.form.validateFields((err, values) => {
289
+      if (!err) {
290
+        getList({ pageNum: 1, pageSize: 10, groupStatus, ...values })
291
+      }
292
+    });
293
+  }
294
+
295
+  // Change 事件
296
+  function handleSelectChange(e) {
297
+    // eslint-disable-next-line no-console
298
+    console.log(e)
299
+  }
300
+
301
+  // 分页
302
+  function onChange(pageNum) {
303
+    // eslint-disable-next-line react-hooks/rules-of-hooks
304
+    getList({ pageNumber: pageNum, pageSize: 10, groupStatus })
305
+  }
306
+
307
+  // 助力成功/进行中/助力失败
308
+  function radioButtonHandleSizeChange(e) {
309
+    setGInviteData({ visible: true, customerId: '', realtyConsultant: '' })
310
+    displayNone()
311
+
312
+    const { value } = e.target
313
+    setgroupStatus(value)
314
+    // setColumns(value === 'helpSucceed' ? privateColumns : publicColumns)
315
+    if (value == 0) { 
316
+        console.log("success", value)
317
+        getList({ pageNumber: 1, pageSize: 10, status: value, groupActivityId }) }
318
+    if (value == 1 || value == 2) {
319
+        console.log("faile", value)
320
+         getFailList({ pageNumber: 1, pageSize: 10, status: value, groupActivityId })
321
+         }
322
+  }
323
+
324
+  function handleReset() {
325
+    props.form.resetFields();
326
+    getList({ pageNumber: 1, pageSize: 10, groupStatus })
327
+  }
328
+
329
+  function toCustomerDateil(record) {
330
+    router.push({
331
+      pathname: '/customer/customerlist/customerDetail',
332
+      query: {
333
+        id: record.customerId,
334
+      },
335
+    });
336
+  }
337
+
338
+  function exportCustomer () {
339
+    const fieldsValue = getFieldsValue()
340
+    request({ ...apis.customer.customerRecommendExport, responseType: 'blob', params: { ...fieldsValue, groupStatus } })
341
+      .then(response => {
342
+        download(response)
343
+      }).catch(error => {
344
+
345
+      })
346
+  }
347
+
348
+  function download (data) {
349
+    if (!data) {
350
+      return
351
+    }
352
+    const url = window.URL.createObjectURL(new Blob([data]))
353
+    const link = document.createElement('a')
354
+    link.style.display = 'none'
355
+    link.href = url
356
+    link.setAttribute('download', '客户列表.xlsx')
357
+    document.body.append(link)
358
+    link.click()
359
+  }
360
+
361
+// 助力记录弹框
362
+function helpRecord(row) {
363
+// 关闭核销
364
+// eslint-disable-next-line max-len
365
+setVerifierData({ visible: false, customerId: row.helpRecordInitiateId, realtyConsultant: row.realtyConsultant })
366
+  // eslint-disable-next-line max-len
367
+  setGInviteData({ visible: true, customerId: row.helpRecordInitiateId, realtyConsultant: row.realtyConsultant })
368
+}
369
+ // 核销
370
+ function helpInitiateRecordVerify(row) {
371
+// 关闭助力记录弹框
372
+// eslint-disable-next-line max-len
373
+  setVerifierData({ visible: true, customerId: row.helpRecordInitiateId, realtyConsultant: row.realtyConsultant })
374
+  // eslint-disable-next-line max-len
375
+  setGInviteData({ visible: false, customerId: row.helpRecordInitiateId, realtyConsultant: row.realtyConsultant })
376
+ }
377
+
378
+  const publicColumns = [
379
+    {
380
+      title: '拼团者',
381
+      dataIndex: 'nickname',
382
+      key: 'nickname',
383
+      align: 'center',
384
+      width: '15%',
385
+    },
386
+    {
387
+      title: '拼团者手机号',
388
+      dataIndex: 'phone',
389
+      key: 'phone',
390
+      align: 'center',
391
+      width: '10%',
392
+    },
393
+    {
394
+      title: '拼团时间',
395
+      dataIndex: 'createTime',
396
+      key: 'createTime',
397
+      align: 'center',
398
+      width: '15%',
399
+    },
400
+    {
401
+      title: '参团者',
402
+      dataIndex: 'helpCount',
403
+      key: 'helpCount',
404
+      align: 'center',
405
+      width: '15%',
406
+      render: (text, record) => <a style={ { color: '#66B3FF' } } onClick={() => helpRecord(record)}>{record.joinPeople}/{record.groupBuyPeople}</a>,
407
+    },
408
+  ]
409
+
410
+  const privateColumns = [
411
+    {
412
+      title: '拼团者',
413
+      dataIndex: 'nickname',
414
+      key: 'nickname',
415
+      align: 'center',
416
+      width: '15%',
417
+      // render: (_, record) => <Avatar shape="square" src={groupStatus === 'helpSucceed' ? record.picture : record.avatarurl} size={64} icon="user" />,
418
+    },
419
+    {
420
+      title: '手机号',
421
+      dataIndex: 'phone',
422
+      key: 'phone',
423
+      align: 'center',
424
+      width: '10%',
425
+      // eslint-disable-next-line no-nested-ternary
426
+      // render: (_, record) => <><span>{groupStatus === 'helpSucceed' ? record.name : record.nickname}</span></>,
427
+    },
428
+    {
429
+      title: '发起时间',
430
+      dataIndex: 'createTime',
431
+      key: 'createTime',
432
+      align: 'center',
433
+      width: '10%',
434
+      // eslint-disable-next-line no-nested-ternary
435
+    },
436
+    {
437
+        title: '成团时间',
438
+        dataIndex: 'endTime',
439
+        key: 'endTime',
440
+        align: 'center',
441
+        width: '10%',
442
+        // eslint-disable-next-line no-nested-ternary
443
+    },
444
+    {
445
+      title: '核销状态',
446
+      dataIndex: 'verificationStatus',
447
+      key: 'verificationStatus',
448
+      align: 'center',
449
+      width: '10%',
450
+      // eslint-disable-next-line no-nested-ternary
451
+      render: (text, records) => {
452
+        if (records.verificationStatus === 0) { return '未核销' }
453
+        if (records.verificationStatus === 1) { return '已核销' }
454
+      },
455
+    },
456
+    {
457
+      title: '操作',
458
+      dataIndex: 'customerId',
459
+      key: 'customerId',
460
+      align: 'center',
461
+      width: '25%',
462
+      render: (x, row) => (
463
+        <>
464
+          {row.verificationStatus === 0 &&
465
+          <AuthButton name="admin.SignList.get" noRight={null}>
466
+           <span style={{ color: '#1990FF', cursor: 'pointer' }} onClick={() => helpInitiateRecordVerify(row)}>核销</span>
467
+          </AuthButton>
468
+        }
469
+        </>
470
+      ),
471
+    },
472
+  ]
473
+
474
+  
475
+  const changePageNum = pageNumber => {
476
+    getList({ pageNum: pageNumber, pageSize: 10 })
477
+  }
478
+
479
+  return (
480
+    <>
481
+      <Form layout="inline" onSubmit={e => handleSubmit(e, props)}>
482
+        <Form.Item>
483
+          {getFieldDecorator('tel')(
484
+            <Input
485
+              prefix={<Icon type="text" style={{ color: 'rgba(0,0,0,.25)' }} />}
486
+              placeholder="电话"
487
+            />,
488
+          )}
489
+        </Form.Item>
490
+        <Form.Item>
491
+            <Button type="primary" htmlType="submit" >
492
+              查询
493
+            </Button>
494
+            <Button style={{ marginLeft: 8 }} onClick={handleReset}>
495
+              重置
496
+            </Button>
497
+            <Button style={{ marginLeft: 8 }} onClick={handleReset}>
498
+              返回
499
+            </Button>
500
+        </Form.Item>
501
+      </Form>
502
+      <Button type="primary" onClick={() => exportCustomer()} style={{ float: 'right', margin: '20px 0', zIndex: 1 }}>
503
+        导出
504
+      </Button>
505
+
506
+      <div style={{ margin: '20px 0' }}>
507
+        <AuthButton name="admin.customer.recommend.get" noRight={null}>
508
+          <Radio.Group value={groupStatus} onChange={radioButtonHandleSizeChange} buttonStyle="solid">
509
+            <Radio.Button value="0">拼团成功</Radio.Button>
510
+            <Radio.Button value="1">进行中</Radio.Button>
511
+            <Radio.Button value="2">拼团失败</Radio.Button>
512
+          </Radio.Group>
513
+        </AuthButton>
514
+      </div>
515
+
516
+      {groupStatus === '0' ?
517
+        <Table dataSource={dataSource.records} columns={privateColumns} pagination={{ total: dataSource.total, onChange }} rowKey="customerList" /> :
518
+        <Table dataSource={dataSource.records} columns={publicColumns} pagination={{ total: dataSource.total, onChange }} rowKey="customerList" /> 
519
+      }
520
+       {/* <InviteTable visibleData={gInviteData} />
521
+       <Verifier visibleData={gVerifierData} /> */}
522
+    </>
523
+  );
524
+}
525
+
526
+const WrappedBody = Form.create({ name: 'body' })(body);
527
+
528
+export default WrappedBody

+ 13
- 13
src/pages/activity/groupActivity/list.jsx View File

@@ -60,7 +60,7 @@ const toEditActivity = (groupActivityId) => () => {
60 60
       dataIndex: 'startTime',
61 61
       key: 'startTime',
62 62
       align: 'center',
63
-      render: (x, row) => <><span>{`${moment(row.startTime).format('YYYY-MM-DD')} —— ${moment(row.endTime).format('YYYY-MM-DD')}`}</span></>
63
+      render: (x, row) => <><span>{`${moment(row.startTime).format('YYYY-MM-DD hh:mm:ss')} —— ${moment(row.endTime).format('YYYY-MM-DD hh:mm:ss')}`}</span></>
64 64
     },
65 65
     {
66 66
         title: '所需积分',
@@ -82,13 +82,13 @@ const toEditActivity = (groupActivityId) => () => {
82 82
     },  
83 83
     {
84 84
       title: '状态',
85
-      dataIndex: 'status',
86
-      key: 'status',
85
+      dataIndex: 'activityStatus',
86
+      key: 'activityStatus',
87 87
       align: 'center',
88 88
       render: (text, records) => {
89
-        if (records.status === 0) { return '进行中' }
90
-        if (records.status === 1) { return '未开始' }
91
-        if (records.status === 2) { return '已结束' }
89
+        if (records.activityStatus === 0) { return '进行中' }
90
+        if (records.activityStatus === 1) { return '未开始' }
91
+        if (records.activityStatus === 2) { return '已结束' }
92 92
       },
93 93
     },
94 94
     {
@@ -98,16 +98,16 @@ const toEditActivity = (groupActivityId) => () => {
98 98
       align: 'center',
99 99
       render: (x, row) => (
100 100
         <>
101
-          {row.status === 0 &&
101
+          {row.activityStatus === 0 &&
102 102
           <AuthButton name="admin.SignList.get" noRight={null}>
103 103
         
104
-            <span style={{ color: '#1990FF', cursor: 'pointer' }} onClick={ getSignList.bind(this, row.groupActivityId)}>拼团记录<Icon type="snippets" className={styles.shoppingCart} /></span>
104
+            <span style={{ color: '#1990FF', cursor: 'pointer' }} onClick={ getSignList.bind(this, row.groupActicityId)}>拼团记录<Icon type="snippets" className={styles.shoppingCart} /></span>
105 105
             <span style={{ color: '#1990FF', cursor: 'pointer' }} onClick={endGroupActivity(row)}>结束活动<Icon type="poweroff" className={styles.edit} /></span>
106 106
             <span style={{ color: '#1990FF', marginRight: '20px', cursor: 'pointer' }} onClick={topGroupActivity(row, row.weight)}>{ row.weight === 1 ? '取消置顶' : '置顶' }<Icon type="vertical-align-top" className={styles.edit} /></span>
107 107
             <span style={{ color: '#1990FF', marginRight: '20px', cursor: 'pointer' }} onClick={recommendGroupActivity(row)}>{ row.sort === true ? '取消推荐首页' : '推荐首页' }<Icon type="vertical-align-top" className={styles.edit} /></span>
108 108
         </AuthButton> }
109 109
 
110
-          {row.status === 1 &&
110
+          {row.activityStatus === 1 &&
111 111
            <AuthButton name="admin.buildingDynamic.finish.put" noRight={null}>
112 112
                       <span style={{ color: '#FF925C', cursor: 'pointer' }} onClick={toEditActivity(row.groupActicityId)}>编辑<Icon type="form" className={styles.edit} /></span>
113 113
                       <span style={{ color: '#1990FF', cursor: 'pointer' }} onClick={endGroupActivity(row)}>结束活动<Icon type="poweroff" className={styles.edit} /></span>
@@ -116,9 +116,9 @@ const toEditActivity = (groupActivityId) => () => {
116 116
         </AuthButton>
117 117
           }
118 118
 
119
-          {row.status === 2 &&
119
+          {row.activityStatus === 2 &&
120 120
         <AuthButton name="admin.buildingDynamic.finish.put" noRight={null}>
121
-           <span style={{ color: '#1990FF', cursor: 'pointer' }} onClick={ getSignList.bind(this, row.groupActivityId)}>拼团记录<Icon type="snippets" className={styles.shoppingCart} /></span>
121
+           <span style={{ color: '#1990FF', cursor: 'pointer' }} onClick={ getSignList.bind(this, row.groupActicityId)}>拼团记录<Icon type="snippets" className={styles.shoppingCart} /></span>
122 122
            <span style={{ color: '#1990FF', marginRight: '20px', cursor: 'pointer' }} onClick={topGroupActivity(row, row.weight)}>{ row.weight === 1 ? '取消置顶' : '置顶' }<Icon type="vertical-align-top" className={styles.edit} /></span>
123 123
             <span style={{ color: '#1990FF', marginRight: '20px', cursor: 'pointer' }} onClick={recommendGroupActivity(row)}>{ row.sort === true ? '取消推荐首页' : '推荐首页' }<Icon type="vertical-align-top" className={styles.edit} /></span>
124 124
         </AuthButton>
@@ -127,11 +127,11 @@ const toEditActivity = (groupActivityId) => () => {
127 127
       ),
128 128
     },
129 129
   ];
130
-  const getSignList = recordId => {
130
+  const getSignList = groupActivityId => {
131 131
       router.push({
132 132
           pathname: '/activity/groupActivity/helpRecord',
133 133
           query: {
134
-            recordId,
134
+            groupActivityId,
135 135
           },
136 136
         });
137 137
   }

+ 7
- 2
src/services/apis.js View File

@@ -751,11 +751,16 @@ export default {
751 751
     method: 'put',
752 752
     action: 'admin.taShareActivity.weight',
753 753
   },
754
-  record: {
755
-    url: `${prefix}/helpRecord`,
754
+  shareSuccList: {
755
+    url: `${prefix}/taShareSuccessRecord`,
756 756
     method: 'get',
757 757
     action: 'admin.taRole.get',
758 758
   },
759
+  shareFailList : {
760
+    url: `${prefix}/taShareFailAndProcessingRecord`,
761
+    method: 'get',
762
+    action: 'admin.taRole.get',
763
+  }
759 764
  },
760 765
  third: {
761 766
   thirdPartyMiniapp: {