zlisen před 3 roky
rodič
revize
07139751a8

+ 2
- 2
src/components/XForm/WrapperForm.jsx Zobrazit soubor

@@ -53,14 +53,14 @@ class WrapperForm extends React.Component {
53 53
       FieldSubmit = <Button htmlType="submit" type="primary">提交</Button>
54 54
     }
55 55
     if (cancelBtn !== false) {
56
-      FieldCancel = <Button htmlType="button" onClick={this.handleCancel} style={{ marginLeft: '48px' }}>取消</Button>
56
+      FieldCancel = <Button htmlType="button" onClick={this.handleCancel} style={{ marginLeft: '48px' }}>{this.props.cancelText||'取消'}</Button>
57 57
     }
58 58
 
59 59
     return FieldSubmit || FieldCancel ? <WrapperItem action render={<>{FieldSubmit}{FieldCancel}</>} /> : null
60 60
   }
61 61
 
62 62
   render () {
63
-    const {fields, form, children, submitBtn, cancelBtn, ...formProps} = this.props;
63
+    const {fields, form, children, submitBtn, cancelBtn, cancelText,...formProps} = this.props;
64 64
     console.log('fields:', fields)
65 65
     const FeildItems = (fields || []).filter(x => x).map((props, inx) => (<WrapperItem key={inx} {...props} form={form} />))
66 66
     

+ 2
- 2
src/pages/Live/LiveActivity/Edit/components/base.jsx Zobrazit soubor

@@ -232,7 +232,7 @@ const header = props => {
232 232
             initialValue: liveActivityData.weight,
233 233
           })(<InputNumber placeholder="权重越大越靠前" style={{ width: '150px' }} />)}
234 234
         </Form.Item>
235
-        <Form.Item label="发布状态">
235
+        {/* <Form.Item label="发布状态">
236 236
           {getFieldDecorator('status', {
237 237
             initialValue: liveActivityData.status == 1 ? '已发布' : '未发布',
238 238
             rules: [{ required: true, message: '请选择发布状态' }],
@@ -242,7 +242,7 @@ const header = props => {
242 242
               <Option value="1">已发布</Option>
243 243
             </Select>,
244 244
           )}
245
-        </Form.Item>
245
+        </Form.Item> */}
246 246
         <Form.Item wrapperCol={{ span: 15, offset: 7 }}>
247 247
           <AuthButton name="live.edit.submit" noRight={null}>
248 248
             <Button type="primary" htmlType="submit" style={{ marginRight: '20px' }}>

+ 44
- 4
src/pages/Live/LiveActivity/List/index.jsx Zobrazit soubor

@@ -81,14 +81,43 @@ const header = props => {
81 81
     });
82 82
   }
83 83
 
84
+  const onLivePublish = row => {
85
+    request({ ...apis.taliveActivity.livePublish, urlData: { id: row.liveActivityId } })
86
+      .then(data => {
87
+        message.info('操作成功');
88
+        getList({ pageNum: data.current, pageSize: 10 });
89
+      })
90
+      .catch(err => {
91
+        // message.info(err.msg)
92
+      });
93
+  };onDelete
94
+
95
+  const onDelete = rowData  => {
96
+
97
+    Modal.confirm({
98
+      title: '确认删除?',
99
+      okText: '确定',
100
+      cancelText: '取消',
101
+      onOk() {
102
+        request({ ...apis.taliveActivity.deleteTaLiveActivity, data: [rowData] })
103
+          .then(data => {
104
+            message.info('操作成功');
105
+            getList({ pageNum: 1, pageSize: 10 });
106
+          })
107
+          .catch(err => {
108
+            // message.info(err.msg)
109
+          });
110
+      },
111
+    });
112
+  };
113
+
84 114
   const toDelLiveActivity = rowData => () => {
85
-    console.log(liveIdList, 'liveIdListliveIdList');
86 115
     if (liveIdList.length < 1) {
87 116
       openNotificationWithIcon('error', '请先选择需要删除的直播活动');
88 117
       return;
89 118
     }
90 119
     Modal.confirm({
91
-      title: '删除后当前直播活动关联的小程序端开屏图、banner图等也会自动下架',
120
+      title: '确认删除?',
92 121
       okText: '确定',
93 122
       cancelText: '取消',
94 123
       onOk() {
@@ -215,10 +244,21 @@ const header = props => {
215 244
         // <AuthButton name="admin.liveActivity.dataRecord" noRight={null}>
216 245
         //   <EditIcon type="record" text="数据记录" onClick={toDataReacord(record)} />
217 246
         // </AuthButton>,
247
+        <AuthButton name="live.publish" noRight={null}>
248
+          <EditIcon
249
+            type={record.status === 1 ? 'cancel' : 'publish'}
250
+            text={record.status === 1 ? '取消发布' : '发布'}
251
+            onClick={() => onLivePublish(record)}
252
+          />
253
+        </AuthButton>,
218 254
 
219 255
         <AuthButton name="live.edit" noRight={null}>
220 256
           <EditIcon type="look" text="查看详情" onClick={toAddLive(record)} />
221 257
         </AuthButton>,
258
+
259
+        <AuthButton name="live.delete" noRight={null}>
260
+          <EditIcon type="delete" text="删除" onClick={()=>onDelete(record)} />
261
+        </AuthButton>,
222 262
       ]),
223 263
     },
224 264
   ];
@@ -253,7 +293,7 @@ const header = props => {
253 293
         } else {
254 294
           values.time = null;
255 295
         }
256
-
296
+        // values.status=0
257 297
         getList({ pageNum: 1, pageSize: 10, ...values });
258 298
       }
259 299
     });
@@ -326,7 +366,7 @@ const header = props => {
326 366
         dataSource={data.records}
327 367
         columns={columns}
328 368
         pagination={false}
329
-        rowKey="activityList"
369
+        rowKey="liveActivityId"
330 370
       />
331 371
       <div style={{ display: 'flex', justifyContent: 'flex-end', marginTop: '30px' }}>
332 372
         <Pagination

+ 3
- 3
src/pages/Live/LiveActivity/add/index.jsx Zobrazit soubor

@@ -81,7 +81,7 @@ const header = props => {
81 81
           message.info('直播结束时间大于开始时间');
82 82
           return;
83 83
         }
84
-
84
+        submitValue.status=0
85 85
         request({ ...apis.taliveActivity.addTaLiveActivity, data: { ...submitValue } })
86 86
           .then(data => {
87 87
             message.info('保存成功');
@@ -196,7 +196,7 @@ const header = props => {
196 196
           {getFieldDecorator('weight', {
197 197
           })(<InputNumber placeholder="权重越大越靠前" style={{ width: '150px' }} />)}
198 198
         </Form.Item>
199
-        <Form.Item label="发布状态">
199
+        {/* <Form.Item label="发布状态">
200 200
           {getFieldDecorator('status', {
201 201
             rules: [{ required: true, message: '请选择发布状态' }],
202 202
           })(
@@ -205,7 +205,7 @@ const header = props => {
205 205
               <Option value="1">是</Option>
206 206
             </Select>,
207 207
           )}
208
-        </Form.Item>
208
+        </Form.Item> */}
209 209
         <Form.Item wrapperCol={{ span: 15, offset: 7 }}>
210 210
           <AuthButton name="live.add.submit" noRight={null}>
211 211
             <Button type="primary" htmlType="submit" style={{ marginRight: '20px' }}>

+ 37
- 32
src/pages/carouselFigure/customImg/edit.jsx Zobrazit soubor

@@ -8,7 +8,6 @@ import request from '../../../utils/request';
8 8
 
9 9
 let helpTips = '';
10 10
 
11
-
12 11
 // const handleFormValueChange = (props, changedValues, allValues) => {
13 12
 //   setExtraData(allValues);
14 13
 // };
@@ -16,10 +15,7 @@ let helpTips = '';
16 15
 const XForm = createForm();
17 16
 
18 17
 const header = props => {
19
-
20
-
21
-  const imgId =1;
22
-
18
+  const imgId = 1;
23 19
 
24 20
   const [data, setData] = useState({});
25 21
 
@@ -30,10 +26,11 @@ const header = props => {
30 26
 
31 27
     // 查询列表
32 28
     const getData = imgId => {
33
-
34
-      request({ ...apis.carsuseFigure.getCustomImg, urlData: { id: 1 } }).then(data => {
35
-
36
-        setData(data);
29
+      request({ ...apis.carsuseFigure.customImg, params: { imgType: 'index' } }).then(data => {
30
+        if (data?.records?.length > 0) {
31
+          setData(data.records[0]);
32
+        }
33
+        // setData(data);
37 34
       });
38 35
     };
39 36
   }
@@ -71,47 +68,55 @@ const header = props => {
71 68
       value: data.imgDocument,
72 69
       rules: [{ required: true, message: '请输入分享文案' }],
73 70
     },
74
-    {
75
-      label: '是否启用',
76
-      name: 'status',
77
-      type: FieldTypes.Switch,
78
-      value: data.status===1?true:false,
79
-      // rules: [{ required: true, message: '请输入分享文案' }],
80
-    },
71
+    // {
72
+    //   label: '是否启用',
73
+    //   name: 'status',
74
+    //   type: FieldTypes.Switch,
75
+    //   value: data.status===1?true:false,
76
+    //   // rules: [{ required: true, message: '请输入分享文案' }],
77
+    // },
81 78
   ];
82 79
 
83 80
   const handleSubmit = values => {
84
-    if (imgId) {
85
-      values.imgId = imgId;
86
-      values.imgType = 'index'
87
-      values.status = values.status==true?1:-1
81
+    if (data.imgId) {
82
+      values.imgId = data.imgId;
83
+      values.imgType = 'index';
88 84
       request({ ...apis.carsuseFigure.updateCustomImg, data: values })
89 85
         .then(data => {
90 86
           message.info('操作成功');
87
+          setData(data);
91 88
           // cancelPage();
92 89
         })
93 90
         .catch(err => {
94 91
           message.info(err.msg || err.message);
95 92
         });
96
-    } 
97
-    // else {
98
-    //   request({ ...apis.carsuseFigure.addCustomImg, data: values })
99
-    //     .then(data => {
100
-    //       cancelPage();
101
-    //     })
102
-    //     .catch(err => {
103
-    //       message.info(err.msg || err.message);
104
-    //     });
105
-    // }
93
+    }
94
+    else {
95
+      values.imgType = 'index';
96
+      request({ ...apis.carsuseFigure.addCustomImg, data: values })
97
+        .then(data => {
98
+          setData(data);
99
+        })
100
+        .catch(err => {
101
+          message.info(err.msg || err.message);
102
+        });
103
+    }
106 104
   };
107 105
 
108 106
   const cancelPage = () => {
109
-    router.go('-1')
107
+    if(data.imgId)
108
+    request({ ...apis.carsuseFigure.deleteCustomImg, urlData:{id:data.imgId} })
109
+        .then(data => {
110
+          setData({});
111
+        })
112
+        .catch(err => {
113
+          message.info(err.msg || err.message);
114
+        });
110 115
   };
111 116
 
112 117
   return (
113 118
     <Card>
114
-      <XForm onSubmit={handleSubmit} onCancel={cancelPage} fields={fields}></XForm>
119
+      <XForm onSubmit={handleSubmit} onCancel={cancelPage} cancelText='删除' cancelBtn={data.imgId?true:false} fields={fields}></XForm>
115 120
     </Card>
116 121
   );
117 122
 };

+ 17
- 4
src/pages/statistics/activity/index.jsx Zobrazit soubor

@@ -8,6 +8,7 @@ import request from '@/utils/request';
8 8
 import apis from '@/services/apis';
9 9
 import TimeSelect from '../compents/TimeSelect';
10 10
 import BuildingSelect from '@/components/SelectButton/BuildSelect';
11
+import Navigate from '@/components/Navigate';
11 12
 // import Count from './components/Count';
12 13
 // import SourceRole from './components/SourceRole';
13 14
 // import UserSex from './components/UserSex';
@@ -42,6 +43,7 @@ const DataReport = props => {
42 43
       key: 'visitPersonNum',
43 44
       width:'25%',
44 45
       sorter: true,
46
+      render: (text)=>text||0
45 47
     },
46 48
     {
47 49
       title: '访问次数',
@@ -49,6 +51,7 @@ const DataReport = props => {
49 51
       key: 'visitNum',
50 52
       width:'25%',
51 53
       sorter: true,
54
+      render: (text)=>text||0
52 55
     },
53 56
     {
54 57
       title: '报名人数',
@@ -56,13 +59,23 @@ const DataReport = props => {
56 59
       key: 'signNum',
57 60
       width:'25%',
58 61
       sorter: true,
59
-        // render: (text, record) => (
60
-        //   <Navigate onClick={toAddVisitNum(record)}>{record.signNum}</Navigate>
61
-        //   // <a style={{ color: '#66B3FF' }} onClick={toAddVisitNum(record)}><span>{record.visitNum}</span></a>
62
-        // ),
62
+      // render: (text)=>text||0
63
+        render: (text, record) => (
64
+          text? <Navigate onClick={()=>toAddVisitNum(record)}>{record.signNum}</Navigate>:0
65
+          // <a style={{ color: '#66B3FF' }} onClick={toAddVisitNum(record)}><span>{record.visitNum}</span></a>
66
+        ),
63 67
     },
64 68
   ];
65 69
 
70
+  const  toAddVisitNum = (record)=>{
71
+    router.push({
72
+      pathname: '/activity/SignupActivity/registrationRecord',
73
+      query: {
74
+        dynamicId:record.dynamicId
75
+      },
76
+    });
77
+  }
78
+
66 79
   //排序
67 80
   const handleTableChange = (pagination, filters, sorter) => {
68 81
     console.log(pagination, filters, sorter);

+ 10
- 7
src/pages/statistics/dataReport/components/SourceRole.jsx Zobrazit soubor

@@ -34,11 +34,13 @@ const SourceRole = props => {
34 34
   }
35 35
   const dataset = data || {};
36 36
 
37
-  const { person_estate_agent = 0, person_null = 0, person_realty_consultant = 0 } =
38
-    dataset.pie || {};
37
+  const { allPersonNum = 0, consultantNum = 0, customerNum = 0 ,estageNum=0,orherNum=0} =
38
+    dataset || {};
39 39
 
40 40
   const pieoptions = {
41
-    color: ['#6B82E6', '#F02D40', '#FF834E'],
41
+    color: ['#F12B3E', '#FE929C', '#647CE1', '#A2B9FF', '#FF844F', '#FFBB9D'],
42
+  
43
+    // color: ['#6B82E6', '#F02D40', '#FF834E'],
42 44
     tooltip: {
43 45
       trigger: 'item',
44 46
       formatter: '{a} <br/>{b}: {c} ({d}%)',
@@ -46,7 +48,7 @@ const SourceRole = props => {
46 48
     legend: {
47 49
       orient: 'horizontal',
48 50
       left: 10,
49
-      data: [`来源置业`, `来源客户`, `其他`],
51
+      data: [`来源置业`, `来源客户`, '来源经纪人',`其他`],
50 52
     },
51 53
     // :${person_realty_consultant}:${person_estate_agent}${person_null}
52 54
     series: [
@@ -70,9 +72,10 @@ const SourceRole = props => {
70 72
           show: false,
71 73
         },
72 74
         data: [
73
-          { value: person_realty_consultant, name: '来源置业' },
74
-          { value: person_estate_agent, name: '来源客户' },
75
-          { value: person_null, name: '其他' },
75
+          { value: consultantNum, name: '来源置业' },
76
+          { value: customerNum, name: '来源客户' },
77
+          { value: estageNum, name: '来源经纪人' },
78
+          { value: orherNum, name: '其他' },
76 79
         ],
77 80
         // data: [
78 81
         //     { '用户来源': '来源置业', value: person_realty_consultant, },

+ 28
- 24
src/pages/statistics/dataReport/components/UserConversion.jsx Zobrazit soubor

@@ -22,36 +22,40 @@ const UserConversion = props => {
22 22
 
23 23
     request({
24 24
       ...apis.indexEcharts.userConversion,
25
-      params,
25
+      // params,
26 26
     }).then(data => {
27
-      console.log(data.data_count.registeredCount / data.data_count.pvNum, '1241234')
27
+
28 28
       setDataset(data, params.conversion)
29 29
     })
30 30
   }
31
-
31
+  // pvNum: 0
32
+  // registeredCount: 0
32 33
   function setDataset(data, theStatis) {
33
-    const { pvNum, ...other } = data.data_count
34
-
35
-    // 获取第一个值
36
-    let num = 0
37
-    for (const v of Object.keys(other)) {
38
-      num = other[v]
39
-      break
40
-    }
41
-
42
-    if (pvNum < num) {
43
-      setTheCurrent([
44
-        { name: getStatisName(theStatis), value: '0' },
45
-        { name: '其余', value:  '0' },
34
+    const { registerPersonNum, allPersonNum } = data
35
+    setTheCurrent([
36
+        { name: getStatisName(theStatis), value: registerPersonNum },
37
+        { name: '其余', value: allPersonNum - registerPersonNum },
46 38
       ])
47
-    } else {
48
-
49
-      setConversionRate(num / pvNum)
50
-      setTheCurrent([
51
-        { name: getStatisName(theStatis), value: num },
52
-        { name: '其余', value: pvNum - num },
53
-      ])
54
-    }
39
+    // 获取第一个值
40
+    // let num = 0
41
+    // for (const v of Object.keys(other)) {
42
+    //   num = other[v]
43
+    //   break
44
+    // }
45
+
46
+    // if (pvNum < num) {
47
+    //   setTheCurrent([
48
+    //     { name: getStatisName(theStatis), value: '0' },
49
+    //     { name: '其余', value:  '0' },
50
+    //   ])
51
+    // } else {
52
+
53
+    //   setConversionRate(num / pvNum)
54
+    //   setTheCurrent([
55
+    //     { name: getStatisName(theStatis), value: num },
56
+    //     { name: '其余', value: pvNum - num },
57
+    //   ])
58
+    // }
55 59
   }
56 60
 
57 61
   function getStatisName(theStatis) {

+ 7
- 3
src/pages/statistics/dataReport/components/UserSex.jsx Zobrazit soubor

@@ -34,8 +34,6 @@ const UserSource = props => {
34 34
       setData(data);
35 35
     });
36 36
   }
37
-  undefined;
38
-  const dataset = data.selectSexUser || [];
39 37
 
40 38
   const options = {
41 39
     color: ['#6B82E6', '#F02D40', '#FF834E'],
@@ -72,7 +70,13 @@ const UserSource = props => {
72 70
       labelLine: {
73 71
         show: false,
74 72
       },
75
-      data: dataset,
73
+      data: [
74
+        { name: '男', value: data.maleNum||0 },
75
+        {
76
+          name: '女',
77
+          value: data.femaleNum||0,
78
+        },
79
+      ],
76 80
     },
77 81
   };
78 82
 

+ 13
- 3
src/services/apis.js Zobrazit soubor

@@ -532,7 +532,7 @@ export default {
532 532
     // },
533 533
     userResource: {
534 534
       method: 'GET',
535
-      url: `${prefix}/selectUserResource`,
535
+      url: `${prefix}/statistics/userOrigin`,
536 536
       action: 'userStatistics',
537 537
     },
538 538
     selectPersonFrom: {
@@ -596,7 +596,7 @@ export default {
596 596
     },
597 597
     userSex: {
598 598
       method: 'GET',
599
-      url: `${prefix}/selectSexUser`,
599
+      url: `${prefix}/statistics/userGender`,
600 600
       action: 'selectSexUser',
601 601
     },
602 602
     newUser: {
@@ -611,7 +611,7 @@ export default {
611 611
     },
612 612
     userConversion: {
613 613
       method: 'GET',
614
-      url: `${prefix}/selectConversion`,
614
+      url: `${prefix}/statistics/userAuthor`,
615 615
       action: 'selectConversion',
616 616
     },
617 617
     intentionUsers: {
@@ -915,6 +915,11 @@ export default {
915 915
       method: 'GET',
916 916
       action: 'admin.taCustomImg.id.get',
917 917
     },
918
+    deleteCustomImg: {
919
+      url: `${prefix}/taCustomImg/:id`,
920
+      method: 'DELETE',
921
+      action: 'admin.taCustomImg.id.delete',
922
+    },
918 923
   },
919 924
   //Course课程+
920 925
   course: {
@@ -1807,6 +1812,11 @@ export default {
1807 1812
       method: 'get',
1808 1813
       action: 'admin.taLiveActivity.get',
1809 1814
     },
1815
+    livePublish: {
1816
+      url: `${prefix}/publish/live/:id`,
1817
+      method: 'put',
1818
+      action: 'admin.publish.live.id.put',
1819
+    },
1810 1820
   },
1811 1821
   taH5SampleManager: {
1812 1822
     taH5Demand: {