ytf 2 vuotta sitten
vanhempi
commit
986b1953f3

+ 29 - 2
seller/config/router.config.js

@@ -438,7 +438,6 @@ export default [
438 438
         name: '',
439 439
         component: './promotion/presale/add_presale',
440 440
       },
441
-      
442 441
       //店铺设置
443 442
       {
444 443
         path: '/store/setting',
@@ -630,7 +629,35 @@ export default [
630 629
         name: '',
631 630
         component: './point/bill/detail',
632 631
       },
633
-      
632
+      //直播装修
633
+      {
634
+        path: '/live/decorate_live',
635
+        icon: 'mobile',
636
+        name: 'live_decorate_live',
637
+        component: './live/live_diy/live_diy_lists',
638
+      },
639
+      //直播商品
640
+      {
641
+        path: '/live/goods_live',
642
+        icon: 'mobile',
643
+        name: 'live_goods_live',
644
+        component: './live/live_goods/live_diy_lists',
645
+      },
646
+      //直播商品添加
647
+      {
648
+        path: '/live/goods_live_edit',
649
+        component: './live/live_goods/live_edit_goods_lists',
650
+      },
651
+      //直播商品添加列表
652
+      {
653
+        path: '/live/room_goods_edit',
654
+        component: './live/live_diy/live_room_goods_edit',
655
+      },
656
+      //直播商品绑定列表
657
+      {
658
+        path: '/live/room_goods_relation',
659
+        component: './live/live_diy/live_room_goods_relation',
660
+      },
634 661
       {
635 662
         component: '404',
636 663
       },

+ 34 - 7
seller/src/components/SldExpressCom/SldExpressCom.js

@@ -276,8 +276,13 @@ export default class SldExpressCom extends Component {
276 276
 
277 277
   //地区数据组装,已经选择的地区id数据跟通用地区组装
278 278
   combine_area_info = (key, sele_id_array) => {
279
+    // 使用组装数据让组件中添加全部按钮
280
+    if(this.com_area_data[0].regionCode != 'CNXXX'){
281
+      this.com_area_data.unshift({"regionCode": "CNXXX","children": [],"regionName":"全部"});
282
+    }
279 283
     let tmp_data = this.com_area_data;
280 284
     let init_com_data = [];
285
+    let bool = true; // 判断是否全部选中 false的话修改参数
281 286
     for (let i in tmp_data) {
282 287
       let tmp_info = {};
283 288
       tmp_info.key = i;
@@ -292,6 +297,7 @@ export default class SldExpressCom extends Component {
292 297
         let cur_data = tmp_data[i].children[j];
293 298
         if (sele_id_array.length == 0) {
294 299
           tmp_info.checkAll = false;//是否全部选中
300
+          bool = false;
295 301
         } else {
296 302
           if (sele_id_array.indexOf(cur_data.regionCode) == -1) {
297 303
             tmp_info.checkAll = false;
@@ -306,6 +312,9 @@ export default class SldExpressCom extends Component {
306 312
       }
307 313
       init_com_data.push(tmp_info);
308 314
     }
315
+    if(!bool){
316
+      init_com_data[0].checkAll=false;
317
+    }
309 318
     this.setState({
310 319
       cur_key: key,
311 320
       permissionList: init_com_data,
@@ -368,16 +377,34 @@ export default class SldExpressCom extends Component {
368 377
   sldHandleCheckAll = (e, index) => {
369 378
     let { permissionList } = this.state;
370 379
     permissionList[index]['checkAll'] = e.target.checked;
371
-    if (e.target.checked) {
372
-      let sldchild = permissionList[index]['sldchild'];
373
-      if (sldchild.length > 0) {
374
-        for (let i = 0; i < sldchild.length; i++) {
375
-          permissionList[index]['checkList'].push(sldchild[i]['value']);
380
+    if(index == 0){
381
+      for(let j = 0;j<permissionList.length;j++){
382
+        if (e.target.checked) {
383
+            let sldchild = permissionList[j]['sldchild'];
384
+            permissionList[j].checkAll=true;
385
+            if (sldchild.length > 0) {
386
+              for (let i = 0; i < sldchild.length; i++) {
387
+                permissionList[j]['checkList'].push(sldchild[i]['value']);
388
+              }
389
+            }
390
+        } else {
391
+          permissionList[j].checkAll=false;
392
+          permissionList[j]['checkList'] = [];
376 393
         }
377 394
       }
378
-    } else {
379
-      permissionList[index]['checkList'] = [];
395
+    }else{
396
+      if (e.target.checked) {
397
+        let sldchild = permissionList[index]['sldchild'];
398
+        if (sldchild.length > 0) {
399
+          for (let i = 0; i < sldchild.length; i++) {
400
+            permissionList[index]['checkList'].push(sldchild[i]['value']);
401
+          }
402
+        }
403
+      } else {
404
+        permissionList[index]['checkList'] = [];
405
+      }
380 406
     }
407
+    
381 408
     permissionList[index]['indeterminate'] = false;
382 409
     this.setState({
383 410
       permissionList: permissionList,

+ 1 - 1
seller/src/components/SldTableRowTwo/index.js

@@ -619,7 +619,7 @@ export default class SldTableRowTwo extends PureComponent {
619 619
 	            height: val.item_height!=undefined?val.item_height+2:cur_height + 2,
620 620
               borderTopWidth:val.lTopWidth!=undefined?val.lTopWidth:1
621 621
             }}>
622
-              {val.required != undefined && val.required && <span style={{ color: 'red' }}>*</span>}
622
+              {val.required != undefined && val.required && <span style={{ color: 'red',fontSize:'40px' }}>*</span>}
623 623
 	            <span className={styles.sld_det_r_text} style={{ fontWeight: this.props.l_fontw!=undefined?this.props.l_fontw:'600',color:this.props.l_color!=undefined?this.props.l_color:'#333'}}>{val.label}</span>
624 624
             </span>
625 625
 							<span className={styles.sld_det_r_item} style={{

+ 2 - 0
seller/src/locales/zh-CN/menu.js

@@ -51,4 +51,6 @@ export default {
51 51
   'menu.point_bill_list': '结算管理',
52 52
   'menu.spreader_goods_list': '推手商品',
53 53
   'menu.spreader_order_list': '推手订单',
54
+  'menu.live_decorate_live': '直播管理',
55
+  'menu.live_goods_live': '直播商品管理',
54 56
 };

+ 4 - 0
seller/src/models/login.js

@@ -90,6 +90,9 @@ export default {
90 90
               } else if (target == 'point') {
91 91
                 target_data.name = '积分商城';
92 92
                 target_data.left_icon = require('../assets/nav/point.png');
93
+              } else if (target == 'live') {
94
+                target_data.name = '直播';
95
+                target_data.left_icon = require('../assets/nav/point.png');
93 96
               } else {
94 97
                 continue;
95 98
               }
@@ -140,6 +143,7 @@ export default {
140 143
           return;
141 144
         }
142 145
         //如果redirect在用户拥有的路由内,则跳转,否则跳转第一个页面
146
+        console.log(redirect);
143 147
         let contain_redirect_flag = false;
144 148
         for(let i= 0;i<all_routes.length;i++){
145 149
           if(redirect.indexOf(all_routes[i])>-1){

+ 2 - 2
seller/src/pages/CheckLogin.js

@@ -8,7 +8,7 @@ export default ({ children }) => {
8 8
   if (typeof start_time == 'undefined' || start_time == null) {
9 9
     return <Redirect to="/user/login"/>;
10 10
   } else {
11
-    if (cur_time - start_time > 58*60*1000) {
11
+    if (cur_time - start_time > 58*60*1000 ) {
12 12
       //用户token过期之后重新根据refresh_token获取token(58分钟,token的有效期是60分钟)
13 13
       let param = new FormData();
14 14
       param.append('grant_type', 'refresh_token');
@@ -45,7 +45,7 @@ export default ({ children }) => {
45 45
     let all_routes = JSON.parse(localStorage.sld_all_routes);
46 46
     let contain_redirect_flag = false;
47 47
     for(let i= 0;i<all_routes.length;i++){
48
-      if(children.props.location.pathname.indexOf(all_routes[i])>-1){
48
+      if(children.props.location.pathname.indexOf("/live/") >-1 ||children.props.location.pathname.indexOf(all_routes[i])>-1){
49 49
         contain_redirect_flag = true;
50 50
         break;
51 51
       }

+ 1 - 0
seller/src/pages/diy/pc_diy/pcdecorate.less

@@ -143,6 +143,7 @@ a {
143 143
 
144 144
 .table_left_require {
145 145
   color: red;
146
+  font-size: 30px;
146 147
 }
147 148
 
148 149
 .adv_02_part {

+ 190 - 189
seller/src/pages/goods/add_goods.js

@@ -88,29 +88,29 @@ export default class AddGoods extends Component {
88 88
             return index + 1;
89 89
           },
90 90
         },
91
-        {
92
-          title: '市场价',
93
-          dataIndex: 'marketPrice',
94
-          align: 'center',
95
-          width: 100,
96
-          render: (text, record) => (
97
-            <FormItem
98
-              style={{ width: '100%' }}
99
-            >
100
-              {getFieldDecorator(`marketPrice${record.key}`, {
101
-                initialValue: text,
102
-              })(
103
-                <InputNumber
104
-                  min={0.01}
105
-                  max={9999999}
106
-                  precision={2}
107
-                  style={{ width: '100%' }}
108
-                  onChange={e => this.handleFieldChange(e, 'marketPrice', record.key)}
109
-                />,
110
-              )}
111
-            </FormItem>
112
-          ),
113
-        },
91
+        // {
92
+        //   title: '市场价',
93
+        //   dataIndex: 'marketPrice',
94
+        //   align: 'center',
95
+        //   width: 100,
96
+        //   render: (text, record) => (
97
+        //     <FormItem
98
+        //       style={{ width: '100%' }}
99
+        //     >
100
+        //       {getFieldDecorator(`marketPrice${record.key}`, {
101
+        //         initialValue: text,
102
+        //       })(
103
+        //         <InputNumber
104
+        //           min={0.01}
105
+        //           max={9999999}
106
+        //           precision={2}
107
+        //           style={{ width: '100%' }}
108
+        //           onChange={e => this.handleFieldChange(e, 'marketPrice', record.key)}
109
+        //         />,
110
+        //       )}
111
+        //     </FormItem>
112
+        //   ),
113
+        // },
114 114
         {
115 115
           title: '价格',
116 116
           dataIndex: 'productPrice',
@@ -190,75 +190,75 @@ export default class AddGoods extends Component {
190 190
             </FormItem>
191 191
           ),
192 192
         },
193
-        {
194
-          title: `${sldComLanguage('长(CM)')}`,
195
-          dataIndex: 'length',
196
-          align: 'center',
197
-          width: 100,
198
-          render: (text, record) => (
199
-            <FormItem
200
-              style={{ width: '100%' }}
201
-            >
202
-              {getFieldDecorator(`length${record.key}`, {
203
-                initialValue: text ? text : 1,
204
-              })(
205
-                <InputNumber
206
-                  min={0.01}
207
-                  max={999}
208
-                  precision={2}
209
-                  style={{ width: '100%' }}
210
-                  onChange={e => this.handleFieldChange(e, 'length', record.key)}
211
-                />,
212
-              )}
213
-            </FormItem>
214
-          ),
215
-        },
216
-        {
217
-          title: `${sldComLanguage('宽(CM)')}`,
218
-          dataIndex: 'width',
219
-          align: 'center',
220
-          width: 100,
221
-          render: (text, record) => (
222
-            <FormItem
223
-              style={{ width: '100%' }}
224
-            >
225
-              {getFieldDecorator(`width${record.key}`, {
226
-                initialValue: text ? text : 1,
227
-              })(
228
-                <InputNumber
229
-                  min={0.01}
230
-                  max={999}
231
-                  precision={2}
232
-                  style={{ width: '100%' }}
233
-                  onChange={e => this.handleFieldChange(e, 'width', record.key)}
234
-                />,
235
-              )}
236
-            </FormItem>
237
-          ),
238
-        },
239
-        {
240
-          title: `${sldComLanguage('高(CM)')}`,
241
-          dataIndex: 'height',
242
-          align: 'center',
243
-          width: 100,
244
-          render: (text, record) => (
245
-            <FormItem
246
-              style={{ width: '100%' }}
247
-            >
248
-              {getFieldDecorator(`height${record.key}`, {
249
-                initialValue: text ? text : 1,
250
-              })(
251
-                <InputNumber
252
-                  min={0.01}
253
-                  max={999}
254
-                  precision={2}
255
-                  style={{ width: '100%' }}
256
-                  onChange={e => this.handleFieldChange(e, 'height', record.key)}
257
-                />,
258
-              )}
259
-            </FormItem>
260
-          ),
261
-        },
193
+        // {
194
+        //   title: `${sldComLanguage('长(CM)')}`,
195
+        //   dataIndex: 'length',
196
+        //   align: 'center',
197
+        //   width: 100,
198
+        //   render: (text, record) => (
199
+        //     <FormItem
200
+        //       style={{ width: '100%' }}
201
+        //     >
202
+        //       {getFieldDecorator(`length${record.key}`, {
203
+        //         initialValue: text ? text : 1,
204
+        //       })(
205
+        //         <InputNumber
206
+        //           min={0.01}
207
+        //           max={999}
208
+        //           precision={2}
209
+        //           style={{ width: '100%' }}
210
+        //           onChange={e => this.handleFieldChange(e, 'length', record.key)}
211
+        //         />,
212
+        //       )}
213
+        //     </FormItem>
214
+        //   ),
215
+        // },
216
+        // {
217
+        //   title: `${sldComLanguage('宽(CM)')}`,
218
+        //   dataIndex: 'width',
219
+        //   align: 'center',
220
+        //   width: 100,
221
+        //   render: (text, record) => (
222
+        //     <FormItem
223
+        //       style={{ width: '100%' }}
224
+        //     >
225
+        //       {getFieldDecorator(`width${record.key}`, {
226
+        //         initialValue: text ? text : 1,
227
+        //       })(
228
+        //         <InputNumber
229
+        //           min={0.01}
230
+        //           max={999}
231
+        //           precision={2}
232
+        //           style={{ width: '100%' }}
233
+        //           onChange={e => this.handleFieldChange(e, 'width', record.key)}
234
+        //         />,
235
+        //       )}
236
+        //     </FormItem>
237
+        //   ),
238
+        // },
239
+        // {
240
+        //   title: `${sldComLanguage('高(CM)')}`,
241
+        //   dataIndex: 'height',
242
+        //   align: 'center',
243
+        //   width: 100,
244
+        //   render: (text, record) => (
245
+        //     <FormItem
246
+        //       style={{ width: '100%' }}
247
+        //     >
248
+        //       {getFieldDecorator(`height${record.key}`, {
249
+        //         initialValue: text ? text : 1,
250
+        //       })(
251
+        //         <InputNumber
252
+        //           min={0.01}
253
+        //           max={999}
254
+        //           precision={2}
255
+        //           style={{ width: '100%' }}
256
+        //           onChange={e => this.handleFieldChange(e, 'height', record.key)}
257
+        //         />,
258
+        //       )}
259
+        //     </FormItem>
260
+        //   ),
261
+        // },
262 262
         {
263 263
           title: `${sldComLanguage('预警值')}`,
264 264
           dataIndex: 'productStockWarning',
@@ -379,29 +379,29 @@ export default class AddGoods extends Component {
379 379
             return index + 1;
380 380
           },
381 381
         },
382
-        {
383
-          title: `${sldComLanguage('市场价')}`,
384
-          dataIndex: 'marketPrice',
385
-          align: 'center',
386
-          width: 100,
387
-          render: (text, record) => (
388
-            <FormItem
389
-              style={{ width: '100%' }}
390
-            >
391
-              {getFieldDecorator(`marketPrice`, {
392
-                initialValue: text,
393
-              })(
394
-                <InputNumber
395
-                  min={0.01}
396
-                  max={9999999}
397
-                  precision={2}
398
-                  style={{ width: '100%' }}
399
-                  onChange={e => this.handleFieldChangeSpu(e, 'marketPrice', record.key)}
400
-                />,
401
-              )}
402
-            </FormItem>
403
-          ),
404
-        },
382
+        // {
383
+        //   title: `${sldComLanguage('市场价')}`,
384
+        //   dataIndex: 'marketPrice',
385
+        //   align: 'center',
386
+        //   width: 100,
387
+        //   render: (text, record) => (
388
+        //     <FormItem
389
+        //       style={{ width: '100%' }}
390
+        //     >
391
+        //       {getFieldDecorator(`marketPrice`, {
392
+        //         initialValue: text,
393
+        //       })(
394
+        //         <InputNumber
395
+        //           min={0.01}
396
+        //           max={9999999}
397
+        //           precision={2}
398
+        //           style={{ width: '100%' }}
399
+        //           onChange={e => this.handleFieldChangeSpu(e, 'marketPrice', record.key)}
400
+        //         />,
401
+        //       )}
402
+        //     </FormItem>
403
+        //   ),
404
+        // },
405 405
         {
406 406
           title: '价格',
407 407
           dataIndex: 'goodsPrice',
@@ -481,75 +481,75 @@ export default class AddGoods extends Component {
481 481
             </FormItem>
482 482
           ),
483 483
         },
484
-        {
485
-          title: `${sldComLanguage('长(CM)')}`,
486
-          dataIndex: 'length',
487
-          align: 'center',
488
-          width: 100,
489
-          render: (text, record) => (
490
-            <FormItem
491
-              style={{ width: '100%' }}
492
-            >
493
-              {getFieldDecorator(`length`, {
494
-                initialValue: text ? text : 1,
495
-              })(
496
-                <InputNumber
497
-                  min={0.01}
498
-                  max={999}
499
-                  precision={2}
500
-                  style={{ width: '100%' }}
501
-                  onChange={e => this.handleFieldChangeSpu(e, 'length', record.key)}
502
-                />,
503
-              )}
504
-            </FormItem>
505
-          ),
506
-        },
507
-        {
508
-          title: `${sldComLanguage('宽(CM)')}`,
509
-          dataIndex: 'width',
510
-          align: 'center',
511
-          width: 100,
512
-          render: (text, record) => (
513
-            <FormItem
514
-              style={{ width: '100%' }}
515
-            >
516
-              {getFieldDecorator(`width`, {
517
-                initialValue: text ? text : 1,
518
-              })(
519
-                <InputNumber
520
-                  min={0.01}
521
-                  max={999}
522
-                  precision={2}
523
-                  style={{ width: '100%' }}
524
-                  onChange={e => this.handleFieldChangeSpu(e, 'width', record.key)}
525
-                />,
526
-              )}
527
-            </FormItem>
528
-          ),
529
-        },
530
-        {
531
-          title: `${sldComLanguage('高(CM)')}`,
532
-          dataIndex: 'height',
533
-          align: 'center',
534
-          width: 100,
535
-          render: (text, record) => (
536
-            <FormItem
537
-              style={{ width: '100%' }}
538
-            >
539
-              {getFieldDecorator(`height`, {
540
-                initialValue: text ? text : 1,
541
-              })(
542
-                <InputNumber
543
-                  min={0.01}
544
-                  max={999}
545
-                  precision={2}
546
-                  style={{ width: '100%' }}
547
-                  onChange={e => this.handleFieldChangeSpu(e, 'height', record.key)}
548
-                />,
549
-              )}
550
-            </FormItem>
551
-          ),
552
-        },
484
+        // {
485
+        //   title: `${sldComLanguage('长(CM)')}`,
486
+        //   dataIndex: 'length',
487
+        //   align: 'center',
488
+        //   width: 100,
489
+        //   render: (text, record) => (
490
+        //     <FormItem
491
+        //       style={{ width: '100%' }}
492
+        //     >
493
+        //       {getFieldDecorator(`length`, {
494
+        //         initialValue: text ? text : 1,
495
+        //       })(
496
+        //         <InputNumber
497
+        //           min={0.01}
498
+        //           max={999}
499
+        //           precision={2}
500
+        //           style={{ width: '100%' }}
501
+        //           onChange={e => this.handleFieldChangeSpu(e, 'length', record.key)}
502
+        //         />,
503
+        //       )}
504
+        //     </FormItem>
505
+        //   ),
506
+        // },
507
+        // {
508
+        //   title: `${sldComLanguage('宽(CM)')}`,
509
+        //   dataIndex: 'width',
510
+        //   align: 'center',
511
+        //   width: 100,
512
+        //   render: (text, record) => (
513
+        //     <FormItem
514
+        //       style={{ width: '100%' }}
515
+        //     >
516
+        //       {getFieldDecorator(`width`, {
517
+        //         initialValue: text ? text : 1,
518
+        //       })(
519
+        //         <InputNumber
520
+        //           min={0.01}
521
+        //           max={999}
522
+        //           precision={2}
523
+        //           style={{ width: '100%' }}
524
+        //           onChange={e => this.handleFieldChangeSpu(e, 'width', record.key)}
525
+        //         />,
526
+        //       )}
527
+        //     </FormItem>
528
+        //   ),
529
+        // },
530
+        // {
531
+        //   title: `${sldComLanguage('高(CM)')}`,
532
+        //   dataIndex: 'height',
533
+        //   align: 'center',
534
+        //   width: 100,
535
+        //   render: (text, record) => (
536
+        //     <FormItem
537
+        //       style={{ width: '100%' }}
538
+        //     >
539
+        //       {getFieldDecorator(`height`, {
540
+        //         initialValue: text ? text : 1,
541
+        //       })(
542
+        //         <InputNumber
543
+        //           min={0.01}
544
+        //           max={999}
545
+        //           precision={2}
546
+        //           style={{ width: '100%' }}
547
+        //           onChange={e => this.handleFieldChangeSpu(e, 'height', record.key)}
548
+        //         />,
549
+        //       )}
550
+        //     </FormItem>
551
+        //   ),
552
+        // },
553 553
         {
554 554
           title: `${sldComLanguage('预警值')}`,
555 555
           dataIndex: 'stockWarning',
@@ -1741,13 +1741,13 @@ export default class AddGoods extends Component {
1741 1741
             //初始化spu_data_table数据
1742 1742
             let tmp_spu_data = spu_data_table.list[0];
1743 1743
             let tar_data = result.productList[0];
1744
-            tmp_spu_data.marketPrice = tar_data.marketPrice;
1744
+            tmp_spu_data.marketPrice = '';
1745 1745
             tmp_spu_data.goodsPrice = tar_data.productPrice;
1746 1746
             tmp_spu_data.goodsStock = tar_data.productStock;
1747 1747
             tmp_spu_data.weight = tar_data.weight;
1748
-            tmp_spu_data.length = tar_data.length;
1749
-            tmp_spu_data.width = tar_data.width;
1750
-            tmp_spu_data.height = tar_data.height;
1748
+            tmp_spu_data.length = '1.00';
1749
+            tmp_spu_data.width = '1.00';
1750
+            tmp_spu_data.height = '1.00';
1751 1751
             tmp_spu_data.stockWarning = tar_data.productStockWarning;
1752 1752
             tmp_spu_data.productCode = tar_data.productCode;
1753 1753
             tmp_spu_data.barCode = tar_data.barCode;
@@ -1952,7 +1952,8 @@ export default class AddGoods extends Component {
1952 1952
       sele_spec_num++;
1953 1953
       //更新表头
1954 1954
       for (let s in columns_spec) {
1955
-        if (columns_spec[s].dataIndex == 'marketPrice') {
1955
+        // if (columns_spec[s].dataIndex == 'marketPrice') {
1956
+        if (columns_spec[s].dataIndex == 'productPrice') {
1956 1957
           columns_spec.splice(s, 0, {
1957 1958
             title: sle_data_new[i].specName,
1958 1959
             dataIndex: 'spec_info[' + i + ']',

+ 678 - 0
seller/src/pages/live/live_diy/live_diy_lists.js

@@ -0,0 +1,678 @@
1
+import { connect } from 'dva/index';
2
+import React, { Component, Fragment } from 'react';
3
+import { Form, Spin, Switch } from 'antd';
4
+import {
5
+  sldIconBtn,
6
+  failTip,
7
+  sucTip,
8
+  sldLlineRtextAddGoods,
9
+  sldHandlePaginationData,
10
+  list_com_page_size_10,
11
+  getSldEmptyH, 
12
+  dragSldTableColumn,
13
+  validatorVendorPhone,
14
+  sldLlineRtextAddGoodsAddMargin,
15
+  formItemLayoutModal,
16
+  dateTimeFormat,
17
+  sldComLanguage,
18
+  sldtbaleOpeBtnText,
19
+  sldPopConfirmDiy,
20
+  getSldCopyData,
21
+  sldSearchValClear,
22
+} from '@/utils/utils';
23
+import Link from 'umi/link';
24
+import { apiUrl } from '@/utils/sldconfig.js';
25
+import global from '@/global.less';
26
+import StandardTable from '@/components/StandardTable';
27
+import SldModal from '@/components/SldModal/SldModal';
28
+import SldTableEdit from '@/components/SldTableEdit/SldTableEdit';
29
+import moment from 'moment';
30
+
31
+let comm_cur_page = 1;//当前页数
32
+let pageSize = list_com_page_size_10;
33
+@connect(({ article }) => ({
34
+  article,
35
+}))
36
+@Form.create()
37
+export default class M_diy_lists extends Component {
38
+  constructor(props) {
39
+    super(props);
40
+    this.state = {
41
+      data: {},
42
+      submiting: false,//按钮loading
43
+      loading: false,//按钮loading
44
+      selectedRows: [],
45
+      selectedRowKeys: [],//selectedRows的key
46
+      modalVisible: false,
47
+      title: '',
48
+      search_con: '',
49
+      type: 'add',//'add'新增  'edit'编辑
50
+      params: { pageSize: pageSize },//搜索条件
51
+      curData: {},//编辑的数据
52
+      addData: [
53
+          {
54
+              type: 'input',
55
+              label: `${
56
+                  sldComLanguage('直播间名字')
57
+              }`,
58
+              name: 'name',
59
+              placeholder: `${
60
+                  sldComLanguage('请输入直播间名字')
61
+              }`,
62
+              extra: `${
63
+                  sldComLanguage('最短3个汉字,最长17个汉字')
64
+              }`,
65
+              initialValue: '',
66
+              minLength: 3,
67
+              maxLength: 17,
68
+              rules: [
69
+                  {
70
+                      required: true,
71
+                      whitespace: true,
72
+                      message: `${
73
+                          sldComLanguage('请输入直播间名字')
74
+                      }`,
75
+                      
76
+                  }
77
+              ],
78
+              
79
+          },
80
+          {
81
+              type: 'rangepicker',
82
+              label: `${sldComLanguage('开播时间')}`,
83
+              name: 'search_create_time',
84
+              placeholder1: `${sldComLanguage('开始时间')}`,
85
+              placeholder2: `${sldComLanguage('结束时间')}`,
86
+              show_time: true,
87
+              extra: `${
88
+                  sldComLanguage('开播时间需要在当前时间的10分钟后,开播时间和结束时间间隔不得短于30分钟,不得超过24小时')
89
+              }`,
90
+              rules: [
91
+                {
92
+                    required: true,
93
+                    message: `${
94
+                      sldComLanguage('请输入时间')
95
+                    }`,
96
+                }
97
+            ],
98
+          },
99
+          {
100
+              type: 'input',
101
+              label: `${
102
+                  sldComLanguage('主播昵称')
103
+              }`,
104
+              name: 'anchorName',
105
+              placeholder: `${
106
+                  sldComLanguage('请输入主播昵称')
107
+              }`,
108
+              extra: `${
109
+                  sldComLanguage('最短2个汉字,最长15个汉字')
110
+              }`,
111
+              initialValue: '',
112
+              minLength: 2,
113
+              maxLength: 15,
114
+              rules: [
115
+                  {
116
+                      required: true,
117
+                      whitespace: true,
118
+                      message: `${
119
+                          sldComLanguage('请输入主播昵称')
120
+                      }`,
121
+                      
122
+                  }
123
+              ],
124
+              
125
+          },
126
+          {
127
+            type: 'input',
128
+            label: `${
129
+                sldComLanguage('主播微信号')
130
+            }`,
131
+            name: 'anchorWechat',
132
+            placeholder: `${
133
+                sldComLanguage('请输入主播微信号')
134
+            }`,
135
+            extra: `${
136
+                sldComLanguage('如果未实名认证,需要进行实名验证')
137
+            }`,
138
+            initialValue: '',
139
+            minLength: 2,
140
+            maxLength: 15,
141
+            rules: [
142
+                {
143
+                    required: true,
144
+                    whitespace: true,
145
+                    message: `${
146
+                        sldComLanguage('请输入主播微信号')
147
+                    }`,
148
+                    
149
+                }
150
+            ],
151
+        },
152
+          {
153
+              type: 'upload_img_upload',
154
+              label: `${sldComLanguage('背景图')}`,//背景图
155
+              name: 'coverImg',
156
+              extra: `${sldComLanguage('建议像素1080*1920,大小不超过2M')}`,
157
+              fileList: [],
158
+              upload_name: 'multipartFile',
159
+              upload_url: apiUrl + `v3/live/seller/broad/upload`,
160
+              uploadChange: (info) => this.uploadImg(info, 'coverImg'),
161
+              uploadPreview: this.uploadImgPre,
162
+              initialValue: '',
163
+              required: true,
164
+          },
165
+          {
166
+              type: 'upload_img_upload',
167
+              label: `${sldComLanguage('分享图')}`,//分享图
168
+              name: 'shareImg',
169
+              extra: `${sldComLanguage('建议像素800*640,大小不超过1M')}`,
170
+              fileList: [],
171
+              upload_name: 'multipartFile',
172
+              upload_url: apiUrl + `v3/live/seller/broad/upload`,
173
+              uploadChange: (info) => this.uploadImg(info, 'shareImg'),
174
+              uploadPreview: this.uploadImgPre,
175
+              initialValue: '',
176
+              required: true,
177
+          },
178
+          {
179
+              type: 'upload_img_upload',
180
+              label: `${sldComLanguage('购物直播频道封面图')}`,//购物直播频道封面图
181
+              name: 'feedsImg',
182
+              extra: `${sldComLanguage('建议像素800*800,大小不超过100KB')}`,
183
+              fileList: [],
184
+              upload_name: 'multipartFile',
185
+              upload_url: apiUrl + `v3/live/seller/broad/upload`,
186
+              uploadChange: (info) => this.uploadImg(info, 'feedsImg'),
187
+              uploadPreview: this.uploadImgPre,
188
+              initialValue: '',
189
+              required : true,
190
+          },
191
+          // {
192
+          //     type: 'switch',
193
+          //     label: `${sldComLanguage('直播间类型')}`,
194
+          //     name: 'type',
195
+          //     placeholder: ``,
196
+          //     initialValue: 1,
197
+          // },
198
+          {
199
+              type: 'switch',
200
+              label: `${sldComLanguage('是否关闭点赞')}`,
201
+              name: 'closeLike',
202
+              placeholder: ``,
203
+              checked:0,
204
+              initialValue: 1,
205
+          },
206
+          {
207
+              type: 'switch',
208
+              label: `${sldComLanguage('是否关闭货架')}`,
209
+              name: 'closeGoods',
210
+              placeholder: ``,
211
+              checked:1,
212
+              initialValue: 1,
213
+          },
214
+          {
215
+              type: 'switch',
216
+              label: `${sldComLanguage('是否关闭评论')}`,
217
+              name: 'closeComment',
218
+              placeholder: ``,
219
+              checked:true,
220
+              initialValue: 1,
221
+          },
222
+          {
223
+              type: 'switch',
224
+              label: `${sldComLanguage('开启官方收录')}`,
225
+              name: 'isFeedsPublic',
226
+              placeholder: ``,
227
+              checked:false,
228
+              initialValue: 1,
229
+          },
230
+          {
231
+              type: 'switch',
232
+              label: `${sldComLanguage('是否关闭回放')}`,
233
+              name: 'closeReplay',
234
+              placeholder: ``,
235
+              checked:true,
236
+              initialValue: true,
237
+          },
238
+          {
239
+              type: 'switch',
240
+              label: `${sldComLanguage('是否关闭分享')}`,
241
+              name: 'closeShare',
242
+              placeholder: ``,
243
+              initialValue: 1,
244
+          },
245
+          {
246
+              type: 'switch',
247
+              label: `${sldComLanguage('是否关闭客服')}`,
248
+              name: 'closeKf',
249
+              placeholder: ``,
250
+              initialValue: 1,
251
+          },
252
+          
253
+      ],//modal框的数据
254
+      columns: [
255
+        {
256
+          title: ' ',
257
+          dataIndex: 'roomId',
258
+          align: 'center',
259
+          width: 55,
260
+          render: (text, record, index) => {
261
+            return (comm_cur_page - 1) * pageSize + index + 1;
262
+          },
263
+        },
264
+        {
265
+          title: `${sldComLanguage('直播名称')}`,
266
+          align: 'center',
267
+          dataIndex: 'name',
268
+          width: 100,
269
+        },
270
+        {
271
+          title: `${sldComLanguage('创建时间')}`,
272
+          dataIndex: 'startTimeStr',
273
+          align: 'center',
274
+          width: 150,
275
+        },
276
+        {
277
+          title: `${sldComLanguage('状态')}`,
278
+          dataIndex: 'liveStatusName',
279
+          align: 'center',
280
+          width: 150,
281
+        },
282
+        {
283
+          title: `${sldComLanguage('操作')}`,
284
+          align: 'center',
285
+          width: 100,
286
+          render: (text, record) => (
287
+            <Fragment>
288
+              <span className={global.splitLine}></span>
289
+              {sldtbaleOpeBtnText(`${sldComLanguage('编辑')}`, () => this.editMDiyPage(record))}
290
+              <Link to={{
291
+                pathname: '/live/room_goods_edit',
292
+                query: {
293
+                  id: record.roomId,
294
+                }
295
+              }}>
296
+                {sldtbaleOpeBtnText(`${sldComLanguage('导入商品')}`, () => null )}
297
+              </Link>
298
+              <Link to={{
299
+                pathname: '/live/room_goods_relation',
300
+                query: {
301
+                  id: record.roomId,
302
+                }
303
+              }}>
304
+                {sldtbaleOpeBtnText(`${sldComLanguage('查看导入商品')}`, () => null)}
305
+              </Link>
306
+              <span className={global.splitLine}></span>
307
+              {sldPopConfirmDiy('leftBottom', `${sldComLanguage('删除后不可恢复,是否确定删除')}`, () => this.operateMDiyPage(record.roomId, 'del'), `${sldComLanguage('确定')}`, `${sldComLanguage('取消')}`,
308
+                sldtbaleOpeBtnText(`${sldComLanguage('删除')}`, () => null))//删除后不可恢复,是否确定删除?
309
+              }
310
+            </Fragment>
311
+          ),
312
+        },
313
+      ],
314
+      modalTitle: '',
315
+    };
316
+  }
317
+
318
+
319
+
320
+  componentDidMount() {
321
+    this.get_list({ pageSize: pageSize });
322
+  }
323
+
324
+  componentWillUnmount() {
325
+
326
+  }
327
+
328
+  //预览图片
329
+  uploadImgPre = (info) => {
330
+    this.viewImg(true, info.name);
331
+  };
332
+
333
+  //上传图片 dataType:用于区分更改那个数据
334
+  uploadImg = (info, dataType) => {
335
+    let { addData } = this.state;
336
+    console.log(info)
337
+    for (let i in addData) {
338
+      if (addData[i].name == dataType) {
339
+        addData[i].fileList = info.fileList;
340
+        addData[i].img_succ_info = (info.file.response != undefined && info.fileList.length > 0 && info.file.response.data != undefined) ? info.file.response.data : [];
341
+      }
342
+    }
343
+    this.setState({ addData });
344
+  };
345
+
346
+  //获取数据列表
347
+  get_list = (params) => {
348
+    const { dispatch } = this.props;
349
+    dispatch({
350
+      type: 'mlive/get_live_page_lists',
351
+      payload: { ...params, type: 'home' },
352
+      callback: (res) => {
353
+        this.setState({ loading: false });
354
+        if (res.state == 200) {
355
+          if (res.data.list.length == 0 && this.state.params.current > 1) {
356
+            params.current = params.current - 1;
357
+            this.get_list(params);
358
+          } else {
359
+            this.setState({
360
+              data: res.data,
361
+              isReset: false,
362
+            });
363
+          }
364
+        }
365
+      },
366
+    });
367
+  };
368
+
369
+  handleSelectRows = (rows, rowkeys) => {
370
+    this.setState({
371
+      selectedRows: rows,
372
+      selectedRowKeys: rowkeys,
373
+    });
374
+  };
375
+
376
+  handleTablePagination = (pagination, filtersArg, sorter, type = 'main') => {
377
+    const { formValues } = this.state;
378
+    if (type == 'main') {
379
+      const params = sldHandlePaginationData(pagination, filtersArg, sorter, formValues);
380
+      pageSize = params.pageSize;
381
+      this.setState({ params });
382
+      this.get_list(params);
383
+    }
384
+  };
385
+
386
+  //装修直播操作,edit 编辑,del 删除
387
+  operateMDiyPage = (id, type) => {
388
+    const { dispatch } = this.props;
389
+    let dis_type = '';
390
+    let params = { roomId: id };
391
+    if (type == 'edit') {
392
+      dis_type = 'mlive/edit_m_live_page';
393
+      params = id;
394
+    } else if (type == 'del') {
395
+      dis_type = 'mlive/del_m_live_page';
396
+    }
397
+    dispatch({
398
+      type: dis_type,
399
+      payload: params,
400
+      callback: (res) => {
401
+        if (res.state == 200) {
402
+          sucTip(res.msg);
403
+          this.get_list(this.state.params);
404
+          this.setState({
405
+            modalVisible: false,
406
+          });
407
+        } else {
408
+          failTip(res.msg);
409
+        }
410
+        this.setState({ submiting: false });
411
+      },
412
+    });
413
+  };
414
+
415
+  sldHandleConfirm = (val) => {
416
+    this.setState({ submiting: true });
417
+    const { addData, curData, type } = this.state;
418
+    const { dispatch } = this.props;
419
+    console.log(val)
420
+    if (val.search_create_time) {
421
+      val.startTimeStr = val.search_create_time[0] ? val.search_create_time[0].format(dateTimeFormat) : '';
422
+      val.endTimeStr = val.search_create_time[1] ? val.search_create_time[1].format(dateTimeFormat) : '';
423
+      var nowTime = new Date().getTime();
424
+      var startTime = new Date(val.startTimeStr).getTime();
425
+      var endTime = new Date(val.endTimeStr).getTime();
426
+      console.log("nowTime: "+nowTime+" startTime: "+startTime+" endTime: "+endTime)
427
+      if(startTime-nowTime<600000){
428
+        failTip("开始时间需要在当前时间的10分钟后 并且 开始时间不能在 6 个月后");
429
+        this.setState({ submiting: false });
430
+        return;
431
+      }
432
+      if(endTime-startTime<1800000 || endTime-startTime>86400000 ){
433
+        failTip("开播时间和结束时间间隔不得短于30分钟,不得超过24小时");
434
+        this.setState({ submiting: false });
435
+        return;
436
+      }
437
+      delete val.search_create_time;
438
+    }
439
+    for (let i in addData) {
440
+      if (addData[i].name == 'coverImg') {
441
+        val.coverImg = addData[i].img_succ_info != undefined && addData[i].img_succ_info.mediaId != undefined ? addData[i].img_succ_info.mediaId : '';
442
+        val.coverImgPath = addData[i].img_succ_info != undefined && addData[i].img_succ_info.path != undefined ? addData[i].img_succ_info.path : '';
443
+      } else if (addData[i].name == 'shareImg') {
444
+        val.shareImg = addData[i].img_succ_info != undefined && addData[i].img_succ_info.mediaId != undefined ? addData[i].img_succ_info.mediaId : '';
445
+        val.shareImgPath = addData[i].img_succ_info != undefined && addData[i].img_succ_info.path != undefined ? addData[i].img_succ_info.path : '';
446
+      } else if (addData[i].name == 'feedsImg') {
447
+        val.feedsImg = addData[i].img_succ_info != undefined && addData[i].img_succ_info.mediaId != undefined ? addData[i].img_succ_info.mediaId : '';
448
+        val.feedsImgPath = addData[i].img_succ_info != undefined && addData[i].img_succ_info.path != undefined ? addData[i].img_succ_info.path : '';
449
+      }
450
+    }
451
+    if(val.name.length<3){
452
+      failTip("直播间名字,最短3个汉字");
453
+      this.setState({ submiting: false });
454
+      return;
455
+    }
456
+    if(val.anchorName.length<2){
457
+      failTip("主播昵称,最短2个汉字");
458
+      this.setState({ submiting: false });
459
+      return;
460
+    }
461
+    if(val.coverImg == ''){
462
+      failTip("背景图 不能为空");
463
+      this.setState({ submiting: false });
464
+      return;
465
+    }
466
+    if(val.shareImg == ''){
467
+      failTip("分享图 不能为空");
468
+      this.setState({ submiting: false });
469
+      return;
470
+    }
471
+    if(val.feedsImg == ''){
472
+      failTip("购物直播频道封面图 不能为空");
473
+      this.setState({ submiting: false });
474
+      return;
475
+    }
476
+    // val.type = val.type ? 1:0;
477
+    val.closeLike = val.closeLike ? 1:0;
478
+    val.closeGoods = val.closeGoods ? 1:0;
479
+    val.closeComment = val.closeComment ? 1:0;
480
+    val.isFeedsPublic = val.isFeedsPublic ? 1:0;
481
+    val.closeReplay = val.closeReplay ? 1:0;
482
+    val.closeShare = val.closeShare ? 1:0;
483
+    val.closeKf = val.closeKf ? 1:0;
484
+    console.log(val);
485
+    let dis_type = '';
486
+    if (type == 'edit') {
487
+      val.roomId = curData.roomId;
488
+      dis_type = 'mlive/edit_m_live_page';
489
+    }else{
490
+      dis_type = 'mlive/add_m_live_page';
491
+    }
492
+    dispatch({
493
+      type: dis_type,
494
+      payload: val,
495
+      callback: (res) => {
496
+        if (res.state == 200) {
497
+          sucTip(res.msg);
498
+          this.get_list({ pageSize: pageSize });
499
+          this.setState({
500
+            modalVisible: false,
501
+            params: { pageSize: pageSize },
502
+          });
503
+        } else {
504
+          if("qrcode_url" == res.msg){
505
+            failTip("主播微信号,未实名认证");
506
+            window.open("https://res.wx.qq.com/op_res/9rSix1dhHfK4rR049JL0PHJ7TpOvkuZ3mE0z7Ou_Etvjf-w1J_jVX0rZqeStLfwh", "_blank");
507
+          }else{
508
+            failTip(res.msg);  
509
+          }
510
+        }
511
+        this.setState({ submiting: false });
512
+      },
513
+    });
514
+  };
515
+
516
+  sldHandleCancle = () => {
517
+    this.setState({ modalVisible: false, modalVisibleAdv: false });
518
+  };
519
+
520
+  //表格拖动
521
+  resizeTable = (index, size, type, data) => {
522
+    let datas = dragSldTableColumn(index, size, data);
523
+    this.setState({ [type]: datas });
524
+  };
525
+
526
+  //新增功能
527
+  addMDiyPage = () => {
528
+    let { addData } = this.state;
529
+    for (let i in addData) {
530
+      addData[i].initialValue = '';
531
+      if(addData[i].name.indexOf("Img")){
532
+        addData[i].fileList = '';
533
+        addData[i].img_succ_info = '';
534
+      }
535
+    }
536
+    this.setState({
537
+      modalVisible: true,
538
+      type: 'add',
539
+      title: `${sldComLanguage('添加直播')}`,
540
+      addData: addData,
541
+    });//添加直播
542
+  };
543
+  editGoods=(record)=>{
544
+    if(record['liveStatus'] != 102){
545
+      failTip("直播间状态为:"+record['liveStatusName']+",不允许导入");  
546
+      return;
547
+    }
548
+  }
549
+  //编辑功能
550
+  editMDiyPage = (record) => {
551
+    let { addData } = this.state;
552
+    if(record['liveStatus'] != 102){
553
+      failTip("直播间状态为:"+record['liveStatusName']+",不允许修改");  
554
+      return;
555
+    }
556
+    for (let i in addData) {
557
+      if (addData[i].name == 'coverImg') {
558
+        let fileList = [];
559
+        if (record['coverImg']) {
560
+          let tmp_data = {};
561
+          tmp_data.uid = new Date();
562
+          tmp_data.name = record['coverImg'];
563
+          tmp_data.mediaId = record['coverImg'];
564
+          tmp_data.status = 'done';
565
+          tmp_data.path = record['coverImgPath'];
566
+          tmp_data.url = record['coverImgUrl'];
567
+          fileList.push(tmp_data);
568
+        }
569
+        addData[i].fileList = fileList;
570
+        addData[i].img_succ_info = { mediaId: record['coverImg'],path: record['coverImgPath'] };
571
+      } else if (addData[i].name == 'shareImg') {
572
+        let fileList = [];
573
+        if (record['shareImg']) {
574
+          let tmp_data = {};
575
+          tmp_data.uid = new Date();
576
+          tmp_data.name = record['shareImg'];
577
+          tmp_data.mediaId = record['shareImg'];
578
+          tmp_data.status = 'done';
579
+          tmp_data.path = record['shareImgPath'];
580
+          tmp_data.url = record['shareImgUrl'];
581
+          fileList.push(tmp_data);
582
+        }
583
+        addData[i].fileList = fileList;
584
+        addData[i].img_succ_info = { mediaId: record['shareImg'],path: record['shareImgPath'] };
585
+      } else if (addData[i].name == 'feedsImg') {
586
+        let fileList = [];
587
+        if (record['feedsImg']) {
588
+          let tmp_data = {};
589
+          tmp_data.uid = new Date();
590
+          tmp_data.name = record['feedsImg'];
591
+          tmp_data.mediaId = record['feedsImg'];
592
+          tmp_data.status = 'done';
593
+          tmp_data.path = record['feedsImgPath'];
594
+          tmp_data.url = record['feedsImgUrl'];
595
+          fileList.push(tmp_data);
596
+        }
597
+        addData[i].fileList = fileList;
598
+        addData[i].img_succ_info = { mediaId: record['feedsImg'],path: record['feedsImgPath'] };
599
+      } else{
600
+        addData[i].initialValue = record[addData[i].name];
601
+      }
602
+    }
603
+    addData[1].initialValue=[moment(record["startTimeStr"]),moment(record["endTimeStr"])]
604
+    this.setState({
605
+      modalVisible: true,
606
+      type: 'edit',
607
+      title: `${sldComLanguage('编辑直播')}`,
608
+      addData: addData,
609
+      curData: record,
610
+    });//编辑直播
611
+  };
612
+
613
+  //搜索
614
+  sldSearch = (val) => {
615
+    this.setState({
616
+      formValues: { name: val,params: { pageSize: pageSize } },
617
+    });
618
+    this.get_list({ pageSize: pageSize, name: val });
619
+  };
620
+
621
+  //搜索框内容的变化
622
+  sldSearChange = (val) => {
623
+    this.setState({
624
+      search_con: val.target.value,
625
+    });
626
+  };
627
+
628
+  //清空搜索内容
629
+  sldSearClear = () => {
630
+    this.setState({
631
+      search_con: '',
632
+    });
633
+    this.sldSearch('');
634
+  };
635
+
636
+  render() {
637
+    const { selectedRows, modalVisible, title, addData, columns, submiting, data, loading, search_con, modalTitle, modalVisibleAdv, screen_data } = this.state;
638
+    return (
639
+      <div className={global.common_page}>
640
+        {sldLlineRtextAddGoodsAddMargin('#69A2F2', `${sldComLanguage('直播页面')}`, 0, 0, 10)}
641
+        <Spin spinning={loading}>
642
+          { /*公共功能条-start*/}
643
+          <div className={global.operate_bg}>
644
+            {sldIconBtn(() => this.addMDiyPage(), `${sldComLanguage('新建直播')}`, 7, 7)}
645
+            {sldSearchValClear(`${sldComLanguage('请输入直播名称')}`, 291, this.sldSearch, `${sldComLanguage('搜索')}`, search_con, this.sldSearChange, this.sldSearClear, 65)}
646
+          </div>
647
+          { /*公共功能条-end*/}
648
+          { /*标准表格-start*/}
649
+          <StandardTable
650
+            totalHeight={document.body.clientHeight - 160}
651
+            selectedRows={selectedRows}
652
+            data={data}
653
+            rowKey={'roomId'}
654
+            isCheck={false}
655
+            columns={columns}
656
+            onSelectRow={this.handleSelectRows}
657
+            onChange={(pagination, filtersArg, sorter) => this.handleTablePagination(pagination, filtersArg, sorter, 'main')}
658
+            resizeTable={(index, size) => this.resizeTable(index, size, 'columns', columns)}
659
+            isColumnResize={true}
660
+          />
661
+          { /*标准表格-end*/}
662
+          { /*新增/编辑对话框-start*/}
663
+          <SldModal
664
+            title={title}
665
+            width={600}
666
+            submiting={submiting}
667
+            modalVisible={modalVisible}
668
+            sldHandleConfirm={(val) => this.sldHandleConfirm(val)}
669
+            sldHandleCancle={this.sldHandleCancle}
670
+            formItemLayoutModal={formItemLayoutModal}
671
+            content={addData}
672
+          />
673
+          { /*新增/编辑对话框-end*/}
674
+        </Spin>
675
+      </div>
676
+    );
677
+  }
678
+}

+ 338 - 0
seller/src/pages/live/live_diy/live_room_goods_edit.js

@@ -0,0 +1,338 @@
1
+/*
2
+* 商品管理——在售商品
3
+* */
4
+import { connect } from 'dva/index';
5
+import React, { Component, Fragment } from 'react';
6
+import { Form, Spin, Tooltip } from 'antd';
7
+import Link from 'umi/link';
8
+import router from 'umi/router';
9
+import {
10
+  failTip,
11
+  sucTip,
12
+  list_com_page_size_5,
13
+  dragSldTableColumn,
14
+  getTableNum,
15
+  sldComLanguage,
16
+  sldPopConfirm,
17
+  dateFormat,
18
+  sldHandlePaginationData,
19
+  sldtbaleOpeBtnText,
20
+  sldIconBtn,
21
+  formItemLayoutModal,
22
+  getSldListGoodsImg80,
23
+  list_com_page_more,
24
+} from '@/utils/utils';
25
+import global from '@/global.less';
26
+import StandardTable from '@/components/StandardTable';
27
+import Search from '@/components/Search/Search';
28
+import SldModal from '@/components/SldModal/SldModal';
29
+
30
+let pageSize = list_com_page_size_5;
31
+@connect(({ product }) => ({
32
+  product,
33
+}))
34
+@Form.create()
35
+export default class GoodsOnlineLists extends Component {
36
+  constructor(props) {
37
+    super(props);
38
+    this.state = {
39
+      search_height: 0,
40
+      modal_width: 700,
41
+      modalVisibleDetail: false,
42
+      initLoading: false,
43
+      submiting: false,
44
+      show_foot: false,
45
+      modalVisible: false,//是否显示规格弹框
46
+      data: {},//列表数据
47
+      selectedRows: [],
48
+      selectedRowKeys: [],//selectedRows的key
49
+      title: `${sldComLanguage('商品规格')}`,
50
+      type: 'add',//'add'新增  'edit'编辑
51
+      params: { pageSize: pageSize },//搜索条件
52
+      search_data: [{
53
+        type: 'input',
54
+        label: `${sldComLanguage('商品名称')}`,
55
+        name: 'goodsName',
56
+        placeholder: `${sldComLanguage('请输入商品名称')}`,
57
+      },],
58
+      roomId: props.location.query.id,
59
+      formValues: {},//搜索条件
60
+      addData: [{
61
+        type: 'select',
62
+        label: `${sldComLanguage('顶部版式')}`,
63
+        name: 'topTemplateId',
64
+        placeholder: `${sldComLanguage('请选择顶部关联版式')}`,
65
+        sel_data: [],
66
+        sele_key: 'templateId',
67
+        sele_name: 'templateName',
68
+        diy: true,
69
+      }, {
70
+        type: 'select',
71
+        label: `${sldComLanguage('底部版式')}`,
72
+        name: 'bottomTemplateId',
73
+        placeholder: `${sldComLanguage('请选择底部关联版式')}`,
74
+        sel_data: [],
75
+        sele_key: 'templateId',
76
+        sele_name: 'templateName',
77
+        diy: true,
78
+      }],//设置关联版式的数据
79
+      operateData: [],
80
+      columns: [
81
+        {
82
+          title: ' ',
83
+          align: 'center',
84
+          width: 30,
85
+          render: (text, record, index) => getTableNum(this.state.params, pageSize, index),
86
+        },
87
+        {
88
+          title: `${sldComLanguage('商品名称')}`,
89
+          dataIndex: 'name',
90
+          align: 'center',
91
+          width: 100,
92
+        },
93
+        {
94
+          title: `${sldComLanguage('价格')}`,
95
+          dataIndex: 'price',
96
+          align: 'center',
97
+          width: 150,
98
+        },
99
+      ],
100
+    };
101
+  }
102
+
103
+
104
+  componentDidMount() {
105
+    this.get_list({ pageSize: pageSize });
106
+    this.getTemplateList();
107
+    this.resize();
108
+    window.addEventListener('resize', this.resize);
109
+  }
110
+
111
+  componentWillUnmount() {
112
+    window.removeEventListener('resize', this.resize);
113
+  }
114
+
115
+  resize = () => {
116
+    const { search_height } = this.state;
117
+    if (this.refs.search_part != undefined) {
118
+      if (this.refs.search_part.clientHeight != search_height) {
119
+        this.setState({ search_height: this.refs.search_part.clientHeight })
120
+      }
121
+    }
122
+  }
123
+
124
+
125
+  sldHandleConfirm = (val) => {
126
+    const { selectedRowKeys } = this.state;
127
+    val.goodsIds = selectedRowKeys.join(',');
128
+    if (val.topTemplateId == undefined && val.bottomTemplateId == undefined) {
129
+      failTip(`${sldComLanguage('请至少选择一个模版')}`);
130
+      return false;
131
+    }
132
+    this.operateGoods(val, 'template');
133
+  };
134
+
135
+
136
+  //商品操作
137
+  operateGoods = (id, type) => {
138
+    this.setState({ submiting: true });
139
+    const { params } = this.state;
140
+    const { dispatch } = this.props;
141
+    let param_data = {};
142
+    let dis_type = '';
143
+    if (type == 'add') {
144
+      dis_type = 'mlive/add_live_goods';
145
+      var roomId = this.props.location.query.id;
146
+      var ids = id.ids;
147
+      param_data = { ids, roomId };
148
+    }
149
+    dispatch({
150
+      type: dis_type,
151
+      payload: param_data,
152
+      callback: (res) => {
153
+        this.setState({ submiting: false });
154
+        if (res.state == 200) {
155
+          sucTip(res.msg);
156
+        } else {
157
+          failTip(res.msg);
158
+        }
159
+      },
160
+    });
161
+  };
162
+
163
+  //获取数据列表
164
+  get_list = (params) => {
165
+    this.setState({ initLoading: true });
166
+    const { dispatch } = this.props;
167
+    // 审核成功的商品才能展示 auditStatus = 2
168
+    params.auditStatus = 2
169
+    dispatch({
170
+      type: 'mgoods/get_live_page_lists',
171
+      payload: { ...params, type: 'home' },
172
+      callback: (res) => {
173
+        this.setState({ initLoading: false });
174
+        if (res.state == 200) {
175
+          if (res.data.length == 0 && this.state.params.current > 1) {
176
+            params.current = params.current - 1;
177
+            this.get_list(params);
178
+          } else {
179
+            res.data.list.map(item => {
180
+              item.disabled = item.isLock == 1 ? true : false;
181
+            })
182
+            this.setState({
183
+              data: res.data,
184
+            });
185
+          }
186
+        }
187
+      },
188
+    });
189
+  };
190
+
191
+  //获取关联版式列表
192
+  getTemplateList = () => {
193
+    const { dispatch } = this.props;
194
+    let { addData } = this.state;
195
+    dispatch({
196
+      type: 'product/get_related_template_lists',
197
+      payload: { pageSize: list_com_page_more },
198
+      callback: (res) => {
199
+        this.setState({ initLoading: false });
200
+        if (res.state == 200) {
201
+          let topData = res.data.list.filter(item => item.templatePosition == 1);
202
+          let bottomData = res.data.list.filter(item => item.templatePosition == 2);
203
+          for (let i in addData) {
204
+            if (addData[i].name == 'topTemplateId') {
205
+              addData[i].sel_data = topData;
206
+            } else {
207
+              addData[i].sel_data = bottomData;
208
+            }
209
+          }
210
+          this.setState({ addData });
211
+        }
212
+      },
213
+    });
214
+  };
215
+
216
+  handleSelectRows = (rows, rowkeys) => {
217
+    this.setState({
218
+      selectedRows: rows,
219
+      selectedRowKeys: rowkeys,
220
+    });
221
+  };
222
+
223
+  handleTablePagination = (pagination, filtersArg, sorter, type = 'main') => {
224
+    const { formValues } = this.state;
225
+    if (type == 'main') {
226
+      const params = sldHandlePaginationData(pagination, filtersArg, sorter, formValues);
227
+      pageSize = params.pageSize;
228
+      this.setState({ params });
229
+      this.get_list(params);
230
+    }
231
+  };
232
+
233
+  //表格拖动
234
+  resizeTable = (index, size, type, data) => {
235
+    let datas = dragSldTableColumn(index, size, data);
236
+    this.setState({ [type]: datas });
237
+  };
238
+
239
+  //搜索事件
240
+  search = (data) => {
241
+    const values = { ...data };
242
+
243
+    for (let i in values) {
244
+      if (values[i] == '') {
245
+        delete values[i];
246
+      }
247
+    }
248
+    this.setState({
249
+      formValues: values,
250
+      params: { pageSize: pageSize }
251
+    });
252
+    this.get_list({ pageSize: pageSize, ...values });
253
+  };
254
+  //搜索重置事件
255
+  seaReset = () => {
256
+    //搜索条件置为空
257
+    this.setState({
258
+      formValues: {},
259
+      params: { pageSize: pageSize }
260
+    });
261
+    this.get_list({ pageSize: pageSize });
262
+  };
263
+
264
+  sldHandleCancle = () => {
265
+    this.setState({ modalVisible: false });
266
+  };
267
+
268
+
269
+  //搜索点击
270
+  moreSearchToggle = () => {
271
+    const { search_height } = this.state;
272
+    if (this.refs.search_part != undefined) {
273
+      if (this.refs.search_part.clientHeight != search_height) {
274
+        this.setState({ search_height: this.refs.search_part.clientHeight })
275
+      }
276
+    }
277
+  }
278
+
279
+  render() {
280
+    const { selectedRows, selectedRowKeys, search_data, columns, initLoading, data, modalVisible, operateData, title, modal_width, show_foot, submiting, search_height } = this.state;
281
+    return (
282
+      <div className={global.common_page} >
283
+        <div style={{width:'94.8%'}} className={global.tableListForm} ref={'search_part'}>
284
+          <Search search_data={search_data} moreSearchToggle={() => this.moreSearchToggle()}
285
+            seaSubmit={(data) => this.search(data)} seaReset={() => this.seaReset()}
286
+          />
287
+        </div>
288
+        <div style={{float:'right',marginTop:'-40px',height:"29px",width:"69px"}} onClick={() => this.props.history.goBack()} className={global.add_goods_bottom_btn}>
289
+          {sldComLanguage('返回')}
290
+        </div>
291
+        {/*公共功能条-start*/}
292
+        <div className={global.operate_bg}>
293
+          <div>
294
+            {selectedRowKeys.length == 0 ? sldIconBtn(() => {
295
+              failTip(`${sldComLanguage('请先选中数据')}`);
296
+              //确认添加选中的商品吗?
297
+            }, `${sldComLanguage('添加')}`, 7, 0, 13, 13, 3, 'ziyuan31', '#f9a006') : sldPopConfirm('leftBottom', `${sldComLanguage('确认添加选中的商品吗?')}`, () => this.operateGoods({ ids: selectedRowKeys.join(',') }, 'add'), `${sldComLanguage('确定')}`, `${sldComLanguage('取消')}`, sldIconBtn(null, `${sldComLanguage('添加')}`, 7, 0, 13, 13, 3, 'ziyuan31', '#f9a006'), 0, 0, '#f9a006')}
298
+          </div>
299
+        </div>
300
+        {/*公共功能条-end*/}
301
+        <Spin spinning={initLoading}>
302
+          {/*标准表格-start*/}
303
+          <StandardTable
304
+            totalHeight={document.body.clientHeight - 190 - search_height - 15}
305
+            bordered={false}
306
+            selectedRows={selectedRows}
307
+            data={data}
308
+            rowKey={'goodsId'}
309
+            isCheck={true}
310
+            columns={columns}
311
+            onSelectRow={this.handleSelectRows}
312
+            onChange={(pagination, filtersArg, sorter) => this.handleTablePagination(pagination, filtersArg, sorter, 'main')}
313
+            onSldHandleSeleRow={this.onSldHandleSeleRow}
314
+            resizeTable={(index, size) => this.resizeTable(index, size, 'columns', columns)}
315
+            isColumnResize={true}
316
+          />
317
+          {/*标准表格-end*/}
318
+
319
+        </Spin>
320
+
321
+        { /*新增/编辑对话框-start*/}
322
+        <SldModal
323
+          width={modal_width}
324
+          title={title}
325
+          submiting={submiting}
326
+          modalVisible={modalVisible}
327
+          sldHandleConfirm={(val) => this.sldHandleConfirm(val)}
328
+          sldHandleCancle={this.sldHandleCancle}
329
+          formItemLayoutModal={formItemLayoutModal}
330
+          content={operateData}
331
+          show_foot={show_foot}
332
+        />
333
+        { /*新增/编辑对话框-end*/}
334
+      </div>
335
+
336
+    );
337
+  }
338
+}

+ 339 - 0
seller/src/pages/live/live_diy/live_room_goods_relation.js

@@ -0,0 +1,339 @@
1
+/*
2
+* 商品管理——在售商品
3
+* */
4
+import { connect } from 'dva/index';
5
+import React, { Component, Fragment } from 'react';
6
+import { Form, Spin, Tooltip } from 'antd';
7
+import Link from 'umi/link';
8
+import router from 'umi/router';
9
+import {
10
+  failTip,
11
+  sucTip,
12
+  list_com_page_size_5,
13
+  dragSldTableColumn,
14
+  getTableNum,
15
+  sldComLanguage,
16
+  sldPopConfirm,
17
+  dateFormat,
18
+  sldHandlePaginationData,
19
+  sldtbaleOpeBtnText,
20
+  sldIconBtn,
21
+  formItemLayoutModal,
22
+  getSldListGoodsImg80,
23
+  list_com_page_more,
24
+} from '@/utils/utils';
25
+import global from '@/global.less';
26
+import StandardTable from '@/components/StandardTable';
27
+import Search from '@/components/Search/Search';
28
+import SldModal from '@/components/SldModal/SldModal';
29
+
30
+let pageSize = list_com_page_size_5;
31
+@connect(({ product }) => ({
32
+  product,
33
+}))
34
+@Form.create()
35
+export default class GoodsOnlineLists extends Component {
36
+  constructor(props) {
37
+    super(props);
38
+    this.state = {
39
+      search_height: 0,
40
+      modal_width: 700,
41
+      modalVisibleDetail: false,
42
+      initLoading: false,
43
+      submiting: false,
44
+      show_foot: false,
45
+      modalVisible: false,//是否显示规格弹框
46
+      data: {},//列表数据
47
+      selectedRows: [],
48
+      selectedRowKeys: [],//selectedRows的key
49
+      title: `${sldComLanguage('商品规格')}`,
50
+      type: 'add',//'add'新增  'edit'编辑
51
+      params: { pageSize: pageSize },//搜索条件
52
+      search_data: [{
53
+        type: 'input',
54
+        label: `${sldComLanguage('商品名称')}`,
55
+        name: 'goodsName',
56
+        placeholder: `${sldComLanguage('请输入商品名称')}`,
57
+      },],
58
+      roomId: props.location.query.id,
59
+      formValues: {},//搜索条件
60
+      addData: [{
61
+        type: 'select',
62
+        label: `${sldComLanguage('顶部版式')}`,
63
+        name: 'topTemplateId',
64
+        placeholder: `${sldComLanguage('请选择顶部关联版式')}`,
65
+        sel_data: [],
66
+        sele_key: 'templateId',
67
+        sele_name: 'templateName',
68
+        diy: true,
69
+      }, {
70
+        type: 'select',
71
+        label: `${sldComLanguage('底部版式')}`,
72
+        name: 'bottomTemplateId',
73
+        placeholder: `${sldComLanguage('请选择底部关联版式')}`,
74
+        sel_data: [],
75
+        sele_key: 'templateId',
76
+        sele_name: 'templateName',
77
+        diy: true,
78
+      }],//设置关联版式的数据
79
+      operateData: [],
80
+      columns: [
81
+        {
82
+          title: ' ',
83
+          align: 'center',
84
+          width: 30,
85
+          render: (text, record, index) => getTableNum(this.state.params, pageSize, index),
86
+        },
87
+        {
88
+          title: `${sldComLanguage('商品名称')}`,
89
+          dataIndex: 'name',
90
+          align: 'center',
91
+          width: 100,
92
+        },
93
+        {
94
+          title: `${sldComLanguage('价格')}`,
95
+          dataIndex: 'price',
96
+          align: 'center',
97
+          width: 150,
98
+        },
99
+      ],
100
+    };
101
+  }
102
+
103
+
104
+  componentDidMount() {
105
+    this.get_list({ pageSize: pageSize });
106
+    this.getTemplateList();
107
+    this.resize();
108
+    window.addEventListener('resize', this.resize);
109
+  }
110
+
111
+  componentWillUnmount() {
112
+    window.removeEventListener('resize', this.resize);
113
+  }
114
+
115
+  resize = () => {
116
+    const { search_height } = this.state;
117
+    if (this.refs.search_part != undefined) {
118
+      if (this.refs.search_part.clientHeight != search_height) {
119
+        this.setState({ search_height: this.refs.search_part.clientHeight })
120
+      }
121
+    }
122
+  }
123
+
124
+
125
+  sldHandleConfirm = (val) => {
126
+    const { selectedRowKeys } = this.state;
127
+    val.goodsIds = selectedRowKeys.join(',');
128
+    if (val.topTemplateId == undefined && val.bottomTemplateId == undefined) {
129
+      failTip(`${sldComLanguage('请至少选择一个模版')}`);
130
+      return false;
131
+    }
132
+    this.operateGoods(val, 'template');
133
+  };
134
+
135
+
136
+  //商品操作
137
+  operateGoods = (id, type) => {
138
+    this.setState({ submiting: true });
139
+    const { params } = this.state;
140
+    const { dispatch } = this.props;
141
+    let param_data = {};
142
+    let dis_type = '';
143
+    if (type == 'add') {
144
+      dis_type = 'mlive/add_live_goods';
145
+      var roomId = this.props.location.query.id;
146
+      var ids = id.ids;
147
+      param_data = { ids, roomId };
148
+    }
149
+    dispatch({
150
+      type: dis_type,
151
+      payload: param_data,
152
+      callback: (res) => {
153
+        this.setState({ submiting: false });
154
+        if (res.state == 200) {
155
+          sucTip(res.msg);
156
+        } else {
157
+          failTip(res.msg);
158
+        }
159
+      },
160
+    });
161
+  };
162
+
163
+  //获取数据列表
164
+  get_list = (params) => {
165
+    this.setState({ initLoading: true });
166
+    const { dispatch } = this.props;
167
+    // 通过传入直播间id查看绑定商品
168
+    var roomId = this.props.location.query.id;
169
+    params.roomId = roomId
170
+    dispatch({
171
+      type: 'mgoods/get_live_page_lists',
172
+      payload: { ...params, type: 'home' },
173
+      callback: (res) => {
174
+        this.setState({ initLoading: false });
175
+        if (res.state == 200) {
176
+          if (res.data.length == 0 && this.state.params.current > 1) {
177
+            params.current = params.current - 1;
178
+            this.get_list(params);
179
+          } else {
180
+            res.data.list.map(item => {
181
+              item.disabled = item.isLock == 1 ? true : false;
182
+            })
183
+            this.setState({
184
+              data: res.data,
185
+            });
186
+          }
187
+        }
188
+      },
189
+    });
190
+  };
191
+
192
+  //获取关联版式列表
193
+  getTemplateList = () => {
194
+    const { dispatch } = this.props;
195
+    let { addData } = this.state;
196
+    dispatch({
197
+      type: 'product/get_related_template_lists',
198
+      payload: { pageSize: list_com_page_more },
199
+      callback: (res) => {
200
+        this.setState({ initLoading: false });
201
+        if (res.state == 200) {
202
+          let topData = res.data.list.filter(item => item.templatePosition == 1);
203
+          let bottomData = res.data.list.filter(item => item.templatePosition == 2);
204
+          for (let i in addData) {
205
+            if (addData[i].name == 'topTemplateId') {
206
+              addData[i].sel_data = topData;
207
+            } else {
208
+              addData[i].sel_data = bottomData;
209
+            }
210
+          }
211
+          this.setState({ addData });
212
+        }
213
+      },
214
+    });
215
+  };
216
+
217
+  handleSelectRows = (rows, rowkeys) => {
218
+    this.setState({
219
+      selectedRows: rows,
220
+      selectedRowKeys: rowkeys,
221
+    });
222
+  };
223
+
224
+  handleTablePagination = (pagination, filtersArg, sorter, type = 'main') => {
225
+    const { formValues } = this.state;
226
+    if (type == 'main') {
227
+      const params = sldHandlePaginationData(pagination, filtersArg, sorter, formValues);
228
+      pageSize = params.pageSize;
229
+      this.setState({ params });
230
+      this.get_list(params);
231
+    }
232
+  };
233
+
234
+  //表格拖动
235
+  resizeTable = (index, size, type, data) => {
236
+    let datas = dragSldTableColumn(index, size, data);
237
+    this.setState({ [type]: datas });
238
+  };
239
+
240
+  //搜索事件
241
+  search = (data) => {
242
+    const values = { ...data };
243
+
244
+    for (let i in values) {
245
+      if (values[i] == '') {
246
+        delete values[i];
247
+      }
248
+    }
249
+    this.setState({
250
+      formValues: values,
251
+      params: { pageSize: pageSize }
252
+    });
253
+    this.get_list({ pageSize: pageSize, ...values });
254
+  };
255
+  //搜索重置事件
256
+  seaReset = () => {
257
+    //搜索条件置为空
258
+    this.setState({
259
+      formValues: {},
260
+      params: { pageSize: pageSize }
261
+    });
262
+    this.get_list({ pageSize: pageSize });
263
+  };
264
+
265
+  sldHandleCancle = () => {
266
+    this.setState({ modalVisible: false });
267
+  };
268
+
269
+
270
+  //搜索点击
271
+  moreSearchToggle = () => {
272
+    const { search_height } = this.state;
273
+    if (this.refs.search_part != undefined) {
274
+      if (this.refs.search_part.clientHeight != search_height) {
275
+        this.setState({ search_height: this.refs.search_part.clientHeight })
276
+      }
277
+    }
278
+  }
279
+
280
+  render() {
281
+    const { selectedRows, selectedRowKeys, search_data, columns, initLoading, data, modalVisible, operateData, title, modal_width, show_foot, submiting, search_height } = this.state;
282
+    return (
283
+      <div className={global.common_page} >
284
+        <div style={{width:'94.8%'}} className={global.tableListForm} ref={'search_part'}>
285
+          <Search search_data={search_data} moreSearchToggle={() => this.moreSearchToggle()}
286
+            seaSubmit={(data) => this.search(data)} seaReset={() => this.seaReset()}
287
+          />
288
+        </div>
289
+        <div style={{float:'right',marginTop:'-40px',height:"29px",width:"69px"}} onClick={() => this.props.history.goBack()} className={global.add_goods_bottom_btn}>
290
+          {sldComLanguage('返回')}
291
+        </div>
292
+        {/*公共功能条-start*/}
293
+        <div className={global.operate_bg}>
294
+          {/* <div>
295
+            {selectedRowKeys.length == 0 ? sldIconBtn(() => {
296
+              failTip(`${sldComLanguage('请先选中数据')}`);
297
+              //确认添加选中的商品吗?
298
+            }, `${sldComLanguage('添加')}`, 7, 0, 13, 13, 3, 'ziyuan31', '#f9a006') : sldPopConfirm('leftBottom', `${sldComLanguage('确认添加选中的商品吗?')}`, () => this.operateGoods({ ids: selectedRowKeys.join(',') }, 'add'), `${sldComLanguage('确定')}`, `${sldComLanguage('取消')}`, sldIconBtn(null, `${sldComLanguage('添加')}`, 7, 0, 13, 13, 3, 'ziyuan31', '#f9a006'), 0, 0, '#f9a006')}
299
+          </div> */}
300
+        </div>
301
+        {/*公共功能条-end*/}
302
+        <Spin spinning={initLoading}>
303
+          {/*标准表格-start*/}
304
+          <StandardTable
305
+            totalHeight={document.body.clientHeight - 190 - search_height - 15}
306
+            bordered={false}
307
+            selectedRows={selectedRows}
308
+            data={data}
309
+            rowKey={'goodsId'}
310
+            isCheck={true}
311
+            columns={columns}
312
+            onSelectRow={this.handleSelectRows}
313
+            onChange={(pagination, filtersArg, sorter) => this.handleTablePagination(pagination, filtersArg, sorter, 'main')}
314
+            onSldHandleSeleRow={this.onSldHandleSeleRow}
315
+            resizeTable={(index, size) => this.resizeTable(index, size, 'columns', columns)}
316
+            isColumnResize={true}
317
+          />
318
+          {/*标准表格-end*/}
319
+
320
+        </Spin>
321
+
322
+        { /*新增/编辑对话框-start*/}
323
+        <SldModal
324
+          width={modal_width}
325
+          title={title}
326
+          submiting={submiting}
327
+          modalVisible={modalVisible}
328
+          sldHandleConfirm={(val) => this.sldHandleConfirm(val)}
329
+          sldHandleCancle={this.sldHandleCancle}
330
+          formItemLayoutModal={formItemLayoutModal}
331
+          content={operateData}
332
+          show_foot={show_foot}
333
+        />
334
+        { /*新增/编辑对话框-end*/}
335
+      </div>
336
+
337
+    );
338
+  }
339
+}

+ 656 - 0
seller/src/pages/live/live_goods/live_diy_lists.js

@@ -0,0 +1,656 @@
1
+import { connect } from 'dva/index';
2
+import React, { Component, Fragment } from 'react';
3
+import { Form, Spin, Switch } from 'antd';
4
+import {
5
+  sldIconBtn,
6
+  failTip,
7
+  sucTip,
8
+  sldLlineRtextAddGoods,
9
+  sldHandlePaginationData,
10
+  list_com_page_size_10,
11
+  getSldEmptyH, 
12
+  dragSldTableColumn,
13
+  validatorVendorPhone,
14
+  sldLlineRtextAddGoodsAddMargin,
15
+  formItemLayoutModal,
16
+  dateTimeFormat,
17
+  sldComLanguage,
18
+  sldtbaleOpeBtnText,
19
+  sldPopConfirmDiy,
20
+  getSldCopyData,
21
+  sldSearchValClear,
22
+} from '@/utils/utils';
23
+import Link from 'umi/link';
24
+import { apiUrl } from '@/utils/sldconfig.js';
25
+import global from '@/global.less';
26
+import StandardTable from '@/components/StandardTable';
27
+import SldModal from '@/components/SldModal/SldModal';
28
+import SldTableEdit from '@/components/SldTableEdit/SldTableEdit';
29
+import moment from 'moment';
30
+
31
+let comm_cur_page = 1;//当前页数
32
+let pageSize = list_com_page_size_10;
33
+@connect(({ article }) => ({
34
+  article,
35
+}))
36
+@Form.create()
37
+export default class live_diy_lists extends Component {
38
+  constructor(props) {
39
+    super(props);
40
+    this.state = {
41
+      data: {},
42
+      submiting: false,//按钮loading
43
+      loading: false,//按钮loading
44
+      selectedRows: [],
45
+      selectedRowKeys: [],//selectedRows的key
46
+      modalVisible: false,
47
+      title: '',
48
+      search_con: '',
49
+      type: 'add',//'add'新增  'edit'编辑
50
+      params: { pageSize: pageSize },//搜索条件
51
+      curData: {},//编辑的数据
52
+      addData: [
53
+          {
54
+              type: 'input',
55
+              label: `${
56
+                  sldComLanguage('直播商品间名字')
57
+              }`,
58
+              name: 'name',
59
+              placeholder: `${
60
+                  sldComLanguage('请输入直播商品间名字')
61
+              }`,
62
+              extra: `${
63
+                  sldComLanguage('最短3个汉字,最长17个汉字')
64
+              }`,
65
+              initialValue: '',
66
+              minLength: 3,
67
+              maxLength: 17,
68
+              rules: [
69
+                  {
70
+                      required: true,
71
+                      whitespace: true,
72
+                      message: `${
73
+                          sldComLanguage('请输入直播商品间名字')
74
+                      }`,
75
+                      
76
+                  }
77
+              ],
78
+              
79
+          },
80
+          {
81
+              type: 'rangepicker',
82
+              label: `${sldComLanguage('开播时间')}`,
83
+              name: 'search_create_time',
84
+              placeholder1: `${sldComLanguage('开始时间')}`,
85
+              placeholder2: `${sldComLanguage('结束时间')}`,
86
+              show_time: true,
87
+              extra: `${
88
+                  sldComLanguage('开播时间需要在当前时间的10分钟后,开播时间和结束时间间隔不得短于30分钟,不得超过24小时')
89
+              }`,
90
+              rules: [
91
+                {
92
+                    required: true,
93
+                    message: `${
94
+                      sldComLanguage('请输入时间')
95
+                    }`,
96
+                }
97
+            ],
98
+          },
99
+          {
100
+              type: 'input',
101
+              label: `${
102
+                  sldComLanguage('主播昵称')
103
+              }`,
104
+              name: 'anchorName',
105
+              placeholder: `${
106
+                  sldComLanguage('请输入主播昵称')
107
+              }`,
108
+              extra: `${
109
+                  sldComLanguage('最短2个汉字,最长15个汉字')
110
+              }`,
111
+              initialValue: '',
112
+              minLength: 2,
113
+              maxLength: 15,
114
+              rules: [
115
+                  {
116
+                      required: true,
117
+                      whitespace: true,
118
+                      message: `${
119
+                          sldComLanguage('请输入主播昵称')
120
+                      }`,
121
+                      
122
+                  }
123
+              ],
124
+              
125
+          },
126
+          {
127
+            type: 'input',
128
+            label: `${
129
+                sldComLanguage('主播微信号')
130
+            }`,
131
+            name: 'anchorWechat',
132
+            placeholder: `${
133
+                sldComLanguage('请输入主播微信号')
134
+            }`,
135
+            extra: `${
136
+                sldComLanguage('如果未实名认证,需要进行实名验证')
137
+            }`,
138
+            initialValue: '',
139
+            minLength: 2,
140
+            maxLength: 15,
141
+            rules: [
142
+                {
143
+                    required: true,
144
+                    whitespace: true,
145
+                    message: `${
146
+                        sldComLanguage('请输入主播微信号')
147
+                    }`,
148
+                    
149
+                }
150
+            ],
151
+        },
152
+          {
153
+              type: 'upload_img_upload',
154
+              label: `${sldComLanguage('背景图')}`,//背景图
155
+              name: 'coverImg',
156
+              extra: `${sldComLanguage('建议像素1080*1920,大小不超过2M')}`,
157
+              fileList: [],
158
+              upload_name: 'multipartFile',
159
+              upload_url: apiUrl + `v3/live/seller/broad/upload`,
160
+              uploadChange: (info) => this.uploadImg(info, 'coverImg'),
161
+              uploadPreview: this.uploadImgPre,
162
+              initialValue: '',
163
+              required: true,
164
+          },
165
+          {
166
+              type: 'upload_img_upload',
167
+              label: `${sldComLanguage('分享图')}`,//分享图
168
+              name: 'shareImg',
169
+              extra: `${sldComLanguage('建议像素800*640,大小不超过1M')}`,
170
+              fileList: [],
171
+              upload_name: 'multipartFile',
172
+              upload_url: apiUrl + `v3/live/seller/broad/upload`,
173
+              uploadChange: (info) => this.uploadImg(info, 'shareImg'),
174
+              uploadPreview: this.uploadImgPre,
175
+              initialValue: '',
176
+              required: true,
177
+          },
178
+          {
179
+              type: 'upload_img_upload',
180
+              label: `${sldComLanguage('购物直播商品频道封面图')}`,//购物直播商品频道封面图
181
+              name: 'feedsImg',
182
+              extra: `${sldComLanguage('建议像素800*800,大小不超过100KB')}`,
183
+              fileList: [],
184
+              upload_name: 'multipartFile',
185
+              upload_url: apiUrl + `v3/live/seller/broad/upload`,
186
+              uploadChange: (info) => this.uploadImg(info, 'feedsImg'),
187
+              uploadPreview: this.uploadImgPre,
188
+              initialValue: '',
189
+              required : true,
190
+          },
191
+          // {
192
+          //     type: 'switch',
193
+          //     label: `${sldComLanguage('直播商品间类型')}`,
194
+          //     name: 'type',
195
+          //     placeholder: ``,
196
+          //     initialValue: 1,
197
+          // },
198
+          {
199
+              type: 'switch',
200
+              label: `${sldComLanguage('是否关闭点赞')}`,
201
+              name: 'closeLike',
202
+              placeholder: ``,
203
+              checked:0,
204
+              initialValue: 1,
205
+          },
206
+          {
207
+              type: 'switch',
208
+              label: `${sldComLanguage('是否关闭货架')}`,
209
+              name: 'closeGoods',
210
+              placeholder: ``,
211
+              checked:1,
212
+              initialValue: 1,
213
+          },
214
+          {
215
+              type: 'switch',
216
+              label: `${sldComLanguage('是否关闭评论')}`,
217
+              name: 'closeComment',
218
+              placeholder: ``,
219
+              checked:true,
220
+              initialValue: 1,
221
+          },
222
+          {
223
+              type: 'switch',
224
+              label: `${sldComLanguage('开启官方收录')}`,
225
+              name: 'isFeedsPublic',
226
+              placeholder: ``,
227
+              checked:false,
228
+              initialValue: 1,
229
+          },
230
+          {
231
+              type: 'switch',
232
+              label: `${sldComLanguage('是否关闭回放')}`,
233
+              name: 'closeReplay',
234
+              placeholder: ``,
235
+              checked:true,
236
+              initialValue: true,
237
+          },
238
+          {
239
+              type: 'switch',
240
+              label: `${sldComLanguage('是否关闭分享')}`,
241
+              name: 'closeShare',
242
+              placeholder: ``,
243
+              initialValue: 1,
244
+          },
245
+          {
246
+              type: 'switch',
247
+              label: `${sldComLanguage('是否关闭客服')}`,
248
+              name: 'closeKf',
249
+              placeholder: ``,
250
+              initialValue: 1,
251
+          },
252
+          
253
+      ],//modal框的数据
254
+      columns: [
255
+        {
256
+          title: ' ',
257
+          dataIndex: 'roomId',
258
+          align: 'center',
259
+          width: 55,
260
+          render: (text, record, index) => {
261
+            return (comm_cur_page - 1) * pageSize + index + 1;
262
+          },
263
+        },
264
+        {
265
+          title: `${sldComLanguage('直播商品名称')}`,
266
+          align: 'center',
267
+          dataIndex: 'name',
268
+          width: 200,
269
+        },
270
+        {
271
+          title: `${sldComLanguage('价格')}`,
272
+          dataIndex: 'price',
273
+          align: 'center',
274
+          width: 150,
275
+        },
276
+        {
277
+          title: `${sldComLanguage('状态')}`,
278
+          dataIndex: 'auditStatusName',
279
+          align: 'center',
280
+          width: 150,
281
+        },
282
+        {
283
+          title: `${sldComLanguage('操作')}`,
284
+          align: 'center',
285
+          width: 100,
286
+          render: (text, record) => (
287
+            <Fragment>
288
+              {/* <span className={global.splitLine}></span>
289
+              {sldtbaleOpeBtnText(`${sldComLanguage('编辑')}`, () => this.editMDiyPage(record))} */}
290
+              <span className={global.splitLine}></span>
291
+              {sldPopConfirmDiy('leftBottom', `${sldComLanguage('删除后不可恢复,是否确定删除')}`, () => this.operateMDiyPage(record.roomId, 'del'), `${sldComLanguage('确定')}`, `${sldComLanguage('取消')}`,
292
+                sldtbaleOpeBtnText(`${sldComLanguage('删除')}`, () => null))//删除后不可恢复,是否确定删除?
293
+              }
294
+            </Fragment>
295
+          ),
296
+        },
297
+      ],
298
+      modalTitle: '',
299
+    };
300
+  }
301
+
302
+  componentDidMount() {
303
+    this.get_list({ pageSize: pageSize });
304
+  }
305
+
306
+  componentWillUnmount() {
307
+
308
+  }
309
+
310
+  //预览图片
311
+  uploadImgPre = (info) => {
312
+    this.viewImg(true, info.name);
313
+  };
314
+
315
+  //上传图片 dataType:用于区分更改那个数据
316
+  uploadImg = (info, dataType) => {
317
+    let { addData } = this.state;
318
+    console.log(info)
319
+    for (let i in addData) {
320
+      if (addData[i].name == dataType) {
321
+        addData[i].fileList = info.fileList;
322
+        addData[i].img_succ_info = (info.file.response != undefined && info.fileList.length > 0 && info.file.response.data != undefined) ? info.file.response.data : [];
323
+      }
324
+    }
325
+    this.setState({ addData });
326
+  };
327
+
328
+  //获取数据列表
329
+  get_list = (params) => {
330
+    const { dispatch } = this.props;
331
+    dispatch({
332
+      type: 'mgoods/get_live_page_lists',
333
+      payload: { ...params, type: 'home' },
334
+      callback: (res) => {
335
+        this.setState({ loading: false });
336
+        if (res.state == 200) {
337
+          if (res.data.list.length == 0 && this.state.params.current > 1) {
338
+            params.current = params.current - 1;
339
+            this.get_list(params);
340
+          } else {
341
+            this.setState({
342
+              data: res.data,
343
+              isReset: false,
344
+            });
345
+          }
346
+        }
347
+      },
348
+    });
349
+  };
350
+
351
+  handleSelectRows = (rows, rowkeys) => {
352
+    this.setState({
353
+      selectedRows: rows,
354
+      selectedRowKeys: rowkeys,
355
+    });
356
+  };
357
+
358
+  handleTablePagination = (pagination, filtersArg, sorter, type = 'main') => {
359
+    const { formValues } = this.state;
360
+    if (type == 'main') {
361
+      const params = sldHandlePaginationData(pagination, filtersArg, sorter, formValues);
362
+      pageSize = params.pageSize;
363
+      this.setState({ params });
364
+      this.get_list(params);
365
+    }
366
+  };
367
+
368
+  //装修直播商品操作,edit 编辑,del 删除
369
+  operateMDiyPage = (id, type) => {
370
+    const { dispatch } = this.props;
371
+    let dis_type = '';
372
+    let params = { roomId: id };
373
+    if (type == 'edit') {
374
+      dis_type = 'mlive/edit_m_live_page';
375
+      params = id;
376
+    } else if (type == 'del') {
377
+      dis_type = 'mlive/del_m_live_page';
378
+    }
379
+    dispatch({
380
+      type: dis_type,
381
+      payload: params,
382
+      callback: (res) => {
383
+        if (res.state == 200) {
384
+          sucTip(res.msg);
385
+          this.get_list(this.state.params);
386
+          this.setState({
387
+            modalVisible: false,
388
+          });
389
+        } else {
390
+          failTip(res.msg);
391
+        }
392
+        this.setState({ submiting: false });
393
+      },
394
+    });
395
+  };
396
+
397
+  sldHandleConfirm = (val) => {
398
+    this.setState({ submiting: true });
399
+    const { addData, curData, type } = this.state;
400
+    const { dispatch } = this.props;
401
+    console.log(val)
402
+    if (val.search_create_time) {
403
+      val.startTimeStr = val.search_create_time[0] ? val.search_create_time[0].format(dateTimeFormat) : '';
404
+      val.endTimeStr = val.search_create_time[1] ? val.search_create_time[1].format(dateTimeFormat) : '';
405
+      var nowTime = new Date().getTime();
406
+      var startTime = new Date(val.startTimeStr).getTime();
407
+      var endTime = new Date(val.endTimeStr).getTime();
408
+      console.log("nowTime: "+nowTime+" startTime: "+startTime+" endTime: "+endTime)
409
+      if(startTime-nowTime<600000){
410
+        failTip("开始时间需要在当前时间的10分钟后 并且 开始时间不能在 6 个月后");
411
+        this.setState({ submiting: false });
412
+        return;
413
+      }
414
+      if(endTime-startTime<1800000 || endTime-startTime>86400000 ){
415
+        failTip("开播时间和结束时间间隔不得短于30分钟,不得超过24小时");
416
+        this.setState({ submiting: false });
417
+        return;
418
+      }
419
+      delete val.search_create_time;
420
+    }
421
+    for (let i in addData) {
422
+      if (addData[i].name == 'coverImg') {
423
+        val.coverImg = addData[i].img_succ_info != undefined && addData[i].img_succ_info.mediaId != undefined ? addData[i].img_succ_info.mediaId : '';
424
+        val.coverImgPath = addData[i].img_succ_info != undefined && addData[i].img_succ_info.path != undefined ? addData[i].img_succ_info.path : '';
425
+      } else if (addData[i].name == 'shareImg') {
426
+        val.shareImg = addData[i].img_succ_info != undefined && addData[i].img_succ_info.mediaId != undefined ? addData[i].img_succ_info.mediaId : '';
427
+        val.shareImgPath = addData[i].img_succ_info != undefined && addData[i].img_succ_info.path != undefined ? addData[i].img_succ_info.path : '';
428
+      } else if (addData[i].name == 'feedsImg') {
429
+        val.feedsImg = addData[i].img_succ_info != undefined && addData[i].img_succ_info.mediaId != undefined ? addData[i].img_succ_info.mediaId : '';
430
+        val.feedsImgPath = addData[i].img_succ_info != undefined && addData[i].img_succ_info.path != undefined ? addData[i].img_succ_info.path : '';
431
+      }
432
+    }
433
+    if(val.name.length<3){
434
+      failTip("直播商品间名字,最短3个汉字");
435
+      this.setState({ submiting: false });
436
+      return;
437
+    }
438
+    if(val.anchorName.length<2){
439
+      failTip("主播昵称,最短2个汉字");
440
+      this.setState({ submiting: false });
441
+      return;
442
+    }
443
+    if(val.coverImg == ''){
444
+      failTip("背景图 不能为空");
445
+      this.setState({ submiting: false });
446
+      return;
447
+    }
448
+    if(val.shareImg == ''){
449
+      failTip("分享图 不能为空");
450
+      this.setState({ submiting: false });
451
+      return;
452
+    }
453
+    if(val.feedsImg == ''){
454
+      failTip("购物直播商品频道封面图 不能为空");
455
+      this.setState({ submiting: false });
456
+      return;
457
+    }
458
+    // val.type = val.type ? 1:0;
459
+    val.closeLike = val.closeLike ? 1:0;
460
+    val.closeGoods = val.closeGoods ? 1:0;
461
+    val.closeComment = val.closeComment ? 1:0;
462
+    val.isFeedsPublic = val.isFeedsPublic ? 1:0;
463
+    val.closeReplay = val.closeReplay ? 1:0;
464
+    val.closeShare = val.closeShare ? 1:0;
465
+    val.closeKf = val.closeKf ? 1:0;
466
+    console.log(val);
467
+    let dis_type = '';
468
+    if (type == 'edit') {
469
+      val.roomId = curData.roomId;
470
+      dis_type = 'mlive/edit_m_live_page';
471
+    }else{
472
+      dis_type = 'mlive/add_m_live_page';
473
+    }
474
+    dispatch({
475
+      type: dis_type,
476
+      payload: val,
477
+      callback: (res) => {
478
+        if (res.state == 200) {
479
+          sucTip(res.msg);
480
+          this.get_list({ pageSize: pageSize });
481
+          this.setState({
482
+            modalVisible: false,
483
+            params: { pageSize: pageSize },
484
+          });
485
+        } else {
486
+          if("qrcode_url" == res.msg){
487
+            failTip("主播微信号,未实名认证");
488
+            window.open("https://res.wx.qq.com/op_res/9rSix1dhHfK4rR049JL0PHJ7TpOvkuZ3mE0z7Ou_Etvjf-w1J_jVX0rZqeStLfwh", "_blank");
489
+          }else{
490
+            failTip(res.msg);  
491
+          }
492
+        }
493
+        this.setState({ submiting: false });
494
+      },
495
+    });
496
+  };
497
+
498
+  sldHandleCancle = () => {
499
+    this.setState({ modalVisible: false, modalVisibleAdv: false });
500
+  };
501
+
502
+  //表格拖动
503
+  resizeTable = (index, size, type, data) => {
504
+    let datas = dragSldTableColumn(index, size, data);
505
+    this.setState({ [type]: datas });
506
+  };
507
+
508
+  //新增功能
509
+  addMDiyPage = () => {
510
+    let { addData } = this.state;
511
+    for (let i in addData) {
512
+      addData[i].initialValue = '';
513
+      if(addData[i].name.indexOf("Img")){
514
+        addData[i].fileList = '';
515
+        addData[i].img_succ_info = '';
516
+      }
517
+    }
518
+    this.setState({
519
+      modalVisible: true,
520
+      type: 'add',
521
+      title: `${sldComLanguage('添加直播商品')}`,
522
+      addData: addData,
523
+    });//添加直播商品
524
+  };
525
+  //编辑功能
526
+  editMDiyPage = (record) => {
527
+    let { addData } = this.state;
528
+    for (let i in addData) {
529
+      if (addData[i].name == 'coverImg') {
530
+        let fileList = [];
531
+        if (record['coverImg']) {
532
+          let tmp_data = {};
533
+          tmp_data.uid = new Date();
534
+          tmp_data.name = record['coverImg'];
535
+          tmp_data.mediaId = record['coverImg'];
536
+          tmp_data.status = 'done';
537
+          tmp_data.path = record['coverImgPath'];
538
+          tmp_data.url = record['coverImgUrl'];
539
+          fileList.push(tmp_data);
540
+        }
541
+        addData[i].fileList = fileList;
542
+        addData[i].img_succ_info = { mediaId: record['coverImg'],path: record['coverImgPath'] };
543
+      } else if (addData[i].name == 'shareImg') {
544
+        let fileList = [];
545
+        if (record['shareImg']) {
546
+          let tmp_data = {};
547
+          tmp_data.uid = new Date();
548
+          tmp_data.name = record['shareImg'];
549
+          tmp_data.mediaId = record['shareImg'];
550
+          tmp_data.status = 'done';
551
+          tmp_data.path = record['shareImgPath'];
552
+          tmp_data.url = record['shareImgUrl'];
553
+          fileList.push(tmp_data);
554
+        }
555
+        addData[i].fileList = fileList;
556
+        addData[i].img_succ_info = { mediaId: record['shareImg'],path: record['shareImgPath'] };
557
+      } else if (addData[i].name == 'feedsImg') {
558
+        let fileList = [];
559
+        if (record['feedsImg']) {
560
+          let tmp_data = {};
561
+          tmp_data.uid = new Date();
562
+          tmp_data.name = record['feedsImg'];
563
+          tmp_data.mediaId = record['feedsImg'];
564
+          tmp_data.status = 'done';
565
+          tmp_data.path = record['feedsImgPath'];
566
+          tmp_data.url = record['feedsImgUrl'];
567
+          fileList.push(tmp_data);
568
+        }
569
+        addData[i].fileList = fileList;
570
+        addData[i].img_succ_info = { mediaId: record['feedsImg'],path: record['feedsImgPath'] };
571
+      } else{
572
+        addData[i].initialValue = record[addData[i].name];
573
+      }
574
+    }
575
+    addData[1].initialValue=[moment(record["startTimeStr"]),moment(record["endTimeStr"])]
576
+    this.setState({
577
+      modalVisible: true,
578
+      type: 'edit',
579
+      title: `${sldComLanguage('编辑直播商品')}`,
580
+      addData: addData,
581
+      curData: record,
582
+    });//编辑直播商品
583
+  };
584
+
585
+  //搜索
586
+  sldSearch = (val) => {
587
+    this.setState({
588
+      formValues: { name: val,params: { pageSize: pageSize } },
589
+    });
590
+    this.get_list({ pageSize: pageSize, name: val });
591
+  };
592
+
593
+  //搜索框内容的变化
594
+  sldSearChange = (val) => {
595
+    this.setState({
596
+      search_con: val.target.value,
597
+    });
598
+  };
599
+
600
+  //清空搜索内容
601
+  sldSearClear = () => {
602
+    this.setState({
603
+      search_con: '',
604
+    });
605
+    this.sldSearch('');
606
+  };
607
+
608
+  render() {
609
+    const { selectedRows, modalVisible, title, addData, columns, submiting, data, loading, search_con, modalTitle, modalVisibleAdv, screen_data } = this.state;
610
+    return (
611
+      <div className={global.common_page}>
612
+        {sldLlineRtextAddGoodsAddMargin('#69A2F2', `${sldComLanguage('直播商品页面')}`, 0, 0, 10)}
613
+        <Spin spinning={loading}>
614
+          { /*公共功能条-start*/}
615
+          <div className={global.operate_bg}>
616
+            <Link to={{
617
+              pathname: '/live/goods_live_edit'
618
+              // pathname: '/live/goods_live_edits'
619
+              // pathname: '/promotion/coupon_list_to_add',
620
+            }}>
621
+            {sldIconBtn(() => null, `${sldComLanguage('新建直播商品商品')}`)}
622
+            </Link>
623
+            {sldSearchValClear(`${sldComLanguage('请输入直播商品名称')}`, 291, this.sldSearch, `${sldComLanguage('搜索')}`, search_con, this.sldSearChange, this.sldSearClear, 65)}
624
+          </div>
625
+          { /*公共功能条-end*/}
626
+          { /*标准表格-start*/}
627
+          <StandardTable
628
+            totalHeight={document.body.clientHeight - 160}
629
+            selectedRows={selectedRows}
630
+            data={data}
631
+            rowKey={'roomId'}
632
+            isCheck={false}
633
+            columns={columns}
634
+            onSelectRow={this.handleSelectRows}
635
+            onChange={(pagination, filtersArg, sorter) => this.handleTablePagination(pagination, filtersArg, sorter, 'main')}
636
+            resizeTable={(index, size) => this.resizeTable(index, size, 'columns', columns)}
637
+            isColumnResize={true}
638
+          />
639
+          { /*标准表格-end*/}
640
+          { /*新增/编辑对话框-start*/}
641
+          <SldModal
642
+            title={title}
643
+            width={600}
644
+            submiting={submiting}
645
+            modalVisible={modalVisible}
646
+            sldHandleConfirm={(val) => this.sldHandleConfirm(val)}
647
+            sldHandleCancle={this.sldHandleCancle}
648
+            formItemLayoutModal={formItemLayoutModal}
649
+            content={addData}
650
+          />
651
+          { /*新增/编辑对话框-end*/}
652
+        </Spin>
653
+      </div>
654
+    );
655
+  }
656
+}

+ 399 - 0
seller/src/pages/live/live_goods/live_edit_goods_lists.js

@@ -0,0 +1,399 @@
1
+/*
2
+* 商品管理——在售商品
3
+* */
4
+import { connect } from 'dva/index';
5
+import React, { Component, Fragment } from 'react';
6
+import { Form, Spin, Tooltip } from 'antd';
7
+import Link from 'umi/link';
8
+import router from 'umi/router';
9
+import {
10
+  failTip,
11
+  sucTip,
12
+  list_com_page_size_5,
13
+  dragSldTableColumn,
14
+  getTableNum,
15
+  sldComLanguage,
16
+  sldPopConfirm,
17
+  dateFormat,
18
+  sldHandlePaginationData,
19
+  sldtbaleOpeBtnText,
20
+  sldIconBtn,
21
+  formItemLayoutModal,
22
+  getSldListGoodsImg80,
23
+  list_com_page_more,
24
+} from '@/utils/utils';
25
+import global from '@/global.less';
26
+import styles from './product.less';
27
+import StandardTable from '@/components/StandardTable';
28
+import Search from '@/components/Search/Search';
29
+import SldModal from '@/components/SldModal/SldModal';
30
+
31
+let pageSize = list_com_page_size_5;
32
+@connect(({ product }) => ({
33
+  product,
34
+}))
35
+@Form.create()
36
+export default class GoodsOnlineLists extends Component {
37
+  constructor(props) {
38
+    super(props);
39
+    this.state = {
40
+      search_height:0,
41
+      modal_width: 700,
42
+      modalVisibleDetail: false,
43
+      initLoading: false,
44
+      submiting: false,
45
+      show_foot: false,
46
+      modalVisible: false,//是否显示规格弹框
47
+      data: {},//列表数据
48
+      selectedRows: [],
49
+      selectedRowKeys: [],//selectedRows的key
50
+      title: `${sldComLanguage('商品规格')}`,
51
+      type: 'add',//'add'新增  'edit'编辑
52
+      params: { pageSize: pageSize },//搜索条件
53
+      search_data: [{
54
+        type: 'input',
55
+        label: `${sldComLanguage('商品名称')}`,
56
+        name: 'goodsName',
57
+        placeholder: `${sldComLanguage('请输入商品名称')}`,
58
+      },],
59
+      formValues: {},//搜索条件
60
+      addData: [{
61
+        type: 'select',
62
+        label: `${sldComLanguage('顶部版式')}`,
63
+        name: 'topTemplateId',
64
+        placeholder: `${sldComLanguage('请选择顶部关联版式')}`,
65
+        sel_data: [],
66
+        sele_key: 'templateId',
67
+        sele_name: 'templateName',
68
+        diy: true,
69
+      }, {
70
+        type: 'select',
71
+        label: `${sldComLanguage('底部版式')}`,
72
+        name: 'bottomTemplateId',
73
+        placeholder: `${sldComLanguage('请选择底部关联版式')}`,
74
+        sel_data: [],
75
+        sele_key: 'templateId',
76
+        sele_name: 'templateName',
77
+        diy: true,
78
+      }],//设置关联版式的数据
79
+      operateData: [],
80
+      columns: [
81
+        {
82
+          title: ' ',
83
+          align: 'center',
84
+          width: 30,
85
+          render: (text, record, index) => getTableNum(this.state.params, pageSize, index),
86
+        },
87
+        {
88
+          title: `${sldComLanguage('商品信息')}`,
89
+          dataIndex: 'mainImage',
90
+          align: 'center',
91
+          width: 250,
92
+          render: (text, record) => {
93
+            return <div className={`${styles.goods_info} ${global.com_flex_row_flex_start}`}>
94
+              <div className={styles.goods_img}>{getSldListGoodsImg80(text)}</div>
95
+              <div className={`${global.com_flex_column_space_between} ${styles.goods_detail}`}>
96
+                <span className={styles.goods_name}>
97
+                  {record.goodsName}
98
+                </span>
99
+                <span className={styles.goods_brief}>
100
+                  {record.categoryPath}
101
+                </span>
102
+              </div>
103
+            </div>;
104
+          },
105
+        },
106
+        {
107
+          title: `${sldComLanguage('商品价格')}`,
108
+          dataIndex: 'goodsPrice',
109
+          align: 'center',
110
+          width: 100,
111
+        },
112
+        {
113
+          title: `${sldComLanguage('商品库存')}`,
114
+          dataIndex: 'goodsStock',
115
+          align: 'center',
116
+          width: 100,
117
+          render: (text, record, index) => {
118
+            return <span style={{
119
+              color: record.warning ? '#FF490A' : '#696969',
120
+              fontWeight: record.warning ? '700' : '500',
121
+            }}>{text}</span>;
122
+          },
123
+        },
124
+        {
125
+          title: `${sldComLanguage('实际/虚拟销量')}`,
126
+          dataIndex: 'actualSales',
127
+          align: 'center',
128
+          width: 150,
129
+          render: (text, record) => {
130
+            return <div>{record.actualSales}/{record.virtualSales}</div>;
131
+          },
132
+        },
133
+        {
134
+          title: `${sldComLanguage('是否推荐')}`,
135
+          dataIndex: 'storeIsRecommend',
136
+          align: 'center',
137
+          width: 100,
138
+          render: (text, record) => {
139
+            return text == 1 ? `${sldComLanguage('推荐')}` : `${sldComLanguage('不推荐')}`;
140
+          },
141
+        },
142
+        {
143
+          title: `${sldComLanguage('发布时间')}`,
144
+          dataIndex: 'createTime',
145
+          align: 'center',
146
+          width: 150,
147
+        },
148
+      ],
149
+    };
150
+  }
151
+
152
+
153
+  componentDidMount() {
154
+    this.get_list({ pageSize: pageSize });
155
+    this.getTemplateList();
156
+    this.resize();
157
+    window.addEventListener('resize', this.resize);
158
+  }
159
+
160
+  componentWillUnmount() {
161
+    window.removeEventListener('resize', this.resize);
162
+  }
163
+
164
+  resize = () =>{
165
+    const {search_height} = this.state;
166
+    if(this.refs.search_part!=undefined){
167
+      if(this.refs.search_part.clientHeight != search_height){
168
+        this.setState({search_height:this.refs.search_part.clientHeight})
169
+      }
170
+    }
171
+  }
172
+
173
+
174
+  sldHandleConfirm = (val) => {
175
+    const { selectedRowKeys } = this.state;
176
+    val.goodsIds = selectedRowKeys.join(',');
177
+    if (val.topTemplateId == undefined && val.bottomTemplateId == undefined) {
178
+      failTip(`${sldComLanguage('请至少选择一个模版')}`);
179
+      return false;
180
+    }
181
+    this.operateGoods(val, 'template');
182
+  };
183
+
184
+  // 查看规格
185
+  viewSpec = (val) => {
186
+    let { view_spec_data, operateData } = this.state;
187
+    operateData = JSON.parse(JSON.stringify(view_spec_data));
188
+    operateData[0].columns = this.goods_spec_columns;
189
+    operateData[0].data = val.productList;
190
+    this.setState({
191
+      modalVisible: true,
192
+      show_foot: false,
193
+      title: `${sldComLanguage('查看规格')}`,
194
+      modal_width: 700,
195
+      operateData,
196
+    });
197
+  };
198
+
199
+  //商品操作
200
+  operateGoods = (id, type) => {
201
+    this.setState({ submiting: true });
202
+    const { params } = this.state;
203
+    const { dispatch } = this.props;
204
+    let param_data = {};
205
+    let dis_type = '';
206
+    if (type == 'add') {
207
+      dis_type = 'mgoods/add_goods';
208
+      param_data = id;
209
+    } 
210
+    console.log(param_data)
211
+    dispatch({
212
+      type: dis_type,
213
+      payload: param_data,
214
+      callback: (res) => {
215
+        this.setState({ submiting: false });
216
+        if (res.state == 200) {
217
+          sucTip(res.msg);
218
+        } else {
219
+          failTip(res.msg);
220
+        }
221
+      },
222
+    });
223
+  };
224
+
225
+  //获取数据列表
226
+  get_list = (params) => {
227
+    this.setState({ initLoading: true });
228
+    const { dispatch } = this.props;
229
+    dispatch({
230
+      type: 'product/get_goods_lists',
231
+      payload: { ...params, state: 3 },
232
+      callback: (res) => {
233
+        this.setState({ initLoading: false });
234
+        if (res.state == 200) {
235
+          if (res.data.length == 0 && this.state.params.current > 1) {
236
+            params.current = params.current - 1;
237
+            this.get_list(params);
238
+          } else {
239
+            res.data.list.map(item=>{
240
+              item.disabled = item.isLock == 1?true:false;
241
+            })
242
+            this.setState({
243
+              data: res.data,
244
+            });
245
+          }
246
+        }
247
+      },
248
+    });
249
+  };
250
+
251
+  //获取关联版式列表
252
+  getTemplateList = () => {
253
+    const { dispatch } = this.props;
254
+    let { addData } = this.state;
255
+    dispatch({
256
+      type: 'product/get_related_template_lists',
257
+      payload: { pageSize: list_com_page_more },
258
+      callback: (res) => {
259
+        this.setState({ initLoading: false });
260
+        if (res.state == 200) {
261
+          let topData = res.data.list.filter(item => item.templatePosition == 1);
262
+          let bottomData = res.data.list.filter(item => item.templatePosition == 2);
263
+          for (let i in addData) {
264
+            if (addData[i].name == 'topTemplateId') {
265
+              addData[i].sel_data = topData;
266
+            } else {
267
+              addData[i].sel_data = bottomData;
268
+            }
269
+          }
270
+          this.setState({ addData });
271
+        }
272
+      },
273
+    });
274
+  };
275
+
276
+  handleSelectRows = (rows, rowkeys) => {
277
+    this.setState({
278
+      selectedRows: rows,
279
+      selectedRowKeys: rowkeys,
280
+    });
281
+  };
282
+
283
+  handleTablePagination = (pagination, filtersArg, sorter, type = 'main') => {
284
+    const { formValues } = this.state;
285
+    if (type == 'main') {
286
+      const params = sldHandlePaginationData(pagination, filtersArg, sorter, formValues);
287
+      pageSize = params.pageSize;
288
+      this.setState({ params });
289
+      this.get_list(params);
290
+    }
291
+  };
292
+
293
+  //表格拖动
294
+  resizeTable = (index, size, type, data) => {
295
+    let datas = dragSldTableColumn(index, size, data);
296
+    this.setState({ [type]: datas });
297
+  };
298
+
299
+  //搜索事件
300
+  search = (data) => {
301
+    const values = { ...data };
302
+    
303
+    for (let i in values) {
304
+      if (values[i] == '') {
305
+        delete values[i];
306
+      }
307
+    }
308
+    this.setState({
309
+      formValues: values,
310
+      params: { pageSize: pageSize }
311
+    });
312
+    this.get_list({ pageSize: pageSize, ...values });
313
+  };
314
+  //搜索重置事件
315
+  seaReset = () => {
316
+    //搜索条件置为空
317
+    this.setState({
318
+      formValues: {},
319
+      params: { pageSize: pageSize }
320
+    });
321
+    this.get_list({ pageSize: pageSize });
322
+  };
323
+
324
+  sldHandleCancle = () => {
325
+    this.setState({ modalVisible: false });
326
+  };
327
+
328
+
329
+  //搜索点击
330
+  moreSearchToggle = () => {
331
+    const {search_height} = this.state;
332
+    if(this.refs.search_part!=undefined){
333
+      if(this.refs.search_part.clientHeight != search_height){
334
+        this.setState({search_height:this.refs.search_part.clientHeight})
335
+      }
336
+    }
337
+  }
338
+
339
+  render() {
340
+    const { selectedRows, selectedRowKeys, search_data, columns, initLoading, data, modalVisible, operateData, title, modal_width, show_foot, submiting, search_height } = this.state;
341
+    return (
342
+      <div className={global.common_page} style={{ flex: 1, padding: 0 }}>
343
+        <div style={{width:'94.8%'}} className={global.tableListForm} ref={'search_part'}>
344
+          <Search search_data={search_data} moreSearchToggle={() => this.moreSearchToggle()}
345
+                  seaSubmit={(data) => this.search(data)} seaReset={() => this.seaReset()}/>
346
+        </div>
347
+        <div style={{float:'right',marginTop:'-2.2%',height:"29px",width:"69px"}} onClick={() => this.props.history.goBack()} className={global.add_goods_bottom_btn}>
348
+          {sldComLanguage('返回')}
349
+        </div>
350
+        {/*公共功能条-start*/}
351
+        <div className={global.operate_bg}
352
+             style={{ display: 'flex', flexDirection: 'row', justifyContent: 'space-between' }}>
353
+          <div style={{ display: 'flex', flexDirection: 'row' }}>
354
+            {selectedRowKeys.length == 0 ? sldIconBtn(() => {
355
+              failTip(`${sldComLanguage('请先选中数据')}`);
356
+              //确认添加选中的商品吗?
357
+            }, `${sldComLanguage('添加')}`, 7, 0, 13, 13, 3, 'ziyuan31', '#f9a006') : sldPopConfirm('leftBottom', `${sldComLanguage('确认添加选中的商品吗?')}`, () => this.operateGoods({ goodsIds: selectedRowKeys.join(',') }, 'add'), `${sldComLanguage('确定')}`, `${sldComLanguage('取消')}`, sldIconBtn(null, `${sldComLanguage('添加')}`, 7, 0, 13, 13, 3, 'ziyuan31', '#f9a006'), 0, 0, '#f9a006')}
358
+
359
+          </div>
360
+        </div>
361
+        {/*公共功能条-end*/}
362
+        <Spin spinning={initLoading}>
363
+          {/*标准表格-start*/}
364
+          <StandardTable
365
+            totalHeight={document.body.clientHeight - 190 - search_height - 15}
366
+            bordered={false}
367
+            selectedRows={selectedRows}
368
+            data={data}
369
+            rowKey={'goodsId'}
370
+            isCheck={true}
371
+            columns={columns}
372
+            onSelectRow={this.handleSelectRows}
373
+            onChange={(pagination, filtersArg, sorter) => this.handleTablePagination(pagination, filtersArg, sorter, 'main')}
374
+            onSldHandleSeleRow={this.onSldHandleSeleRow}
375
+            resizeTable={(index, size) => this.resizeTable(index, size, 'columns', columns)}
376
+            isColumnResize={true}
377
+          />
378
+          {/*标准表格-end*/}
379
+
380
+        </Spin>
381
+
382
+        { /*新增/编辑对话框-start*/}
383
+        <SldModal
384
+          width={modal_width}
385
+          title={title}
386
+          submiting={submiting}
387
+          modalVisible={modalVisible}
388
+          sldHandleConfirm={(val) => this.sldHandleConfirm(val)}
389
+          sldHandleCancle={this.sldHandleCancle}
390
+          formItemLayoutModal={formItemLayoutModal}
391
+          content={operateData}
392
+          show_foot={show_foot}
393
+        />
394
+        { /*新增/编辑对话框-end*/}
395
+      </div>
396
+
397
+    );
398
+  }
399
+}

+ 83 - 0
seller/src/pages/live/live_goods/product.less

@@ -0,0 +1,83 @@
1
+.right_nav {
2
+  position: fixed;
3
+  top: 20vh;
4
+  right: 10px;
5
+  width:120px;
6
+  background:rgba(255,255,255,1);
7
+  box-shadow:0 0 15px 0 rgba(153,153,153,0.15);
8
+  .nav_title{
9
+    height:38px;
10
+    line-height: 38px;
11
+    width: 100%;
12
+    display: inline-block;
13
+    background:rgba(236,245,255,1);
14
+    text-align:center;
15
+    color: #08A9B7;
16
+    font-size: 14px;
17
+    font-weight: 700;
18
+  }
19
+  .nav_item{
20
+    color: #999;
21
+    font-size: 12px;
22
+    font-weight: 700;
23
+    padding: 9px 35px 9px 26px;
24
+    width:111px;
25
+    height:30px;
26
+    line-height: 12px;
27
+    background:#fff;
28
+    border-radius:15px 0 0 15px;
29
+    display: block;
30
+    margin: 10px 0 10px 9px;
31
+  }
32
+  .nav_item:hover,.nav_item.nav_sel{
33
+    color: #333;
34
+    background:rgba(65,157,253,.1);
35
+  }
36
+}
37
+
38
+.goods_detail_body{
39
+  border: 1px solid #F2F2F2;
40
+  padding: 15px;
41
+}
42
+
43
+.goods_info{
44
+  .goods_detail{
45
+    height: 80px;
46
+    margin-left: 10px;
47
+    flex: 1;
48
+  }
49
+  .goods_img{
50
+    width:80px;
51
+    height:80px;
52
+    background:rgba(248,248,248,1);
53
+    border:1px solid rgba(226,229,246,1);
54
+    border-radius:3px;
55
+    overflow: hidden;
56
+    display: inline-block;
57
+  }
58
+  .goods_name{
59
+    overflow: hidden;
60
+    text-overflow: ellipsis;
61
+    display: -webkit-box;
62
+    -webkit-line-clamp: 2;
63
+    /*! autoprefixer: off */
64
+    -webkit-box-orient: vertical;
65
+    word-break: break-word;
66
+    color:#333;
67
+    font-size: 14px;
68
+    line-height: 17px;
69
+    text-align: left;
70
+    height: 34px;
71
+    flex-shrink: 0;
72
+  }
73
+  .goods_brief{
74
+    color: #666;
75
+    font-size: 12px;
76
+    overflow: hidden;
77
+    text-overflow: ellipsis;
78
+    white-space: nowrap;
79
+    text-align: left;
80
+    width: 100%;
81
+    display: inline-block;
82
+  }
83
+}

+ 41 - 0
seller/src/pages/live/models/mgoods.js

@@ -0,0 +1,41 @@
1
+import { sldCommonService } from '@/utils/utils';
2
+
3
+export default {
4
+	
5
+	namespace: 'mgoods',
6
+	state: {
7
+		loading: false,// 加载状态
8
+		data: {
9
+			list: [],
10
+			pagination: {},
11
+		},
12
+	},
13
+
14
+	effects: {
15
+		//slodon_直播_获取直播页列表 
16
+		* get_live_page_lists({ payload, callback }, { call, put }) {
17
+			const response = yield call(sldCommonService, payload, 'get', 'v3/live/seller/goods/list');
18
+			if (callback) callback(response);
19
+		},
20
+		//slodon_直播_获取直播间绑定商品列表 
21
+		* get_live_goods_relation_lists({ payload, callback }, { call, put }) {
22
+			const response = yield call(sldCommonService, payload, 'get', 'v3/live/seller/goods/list/relation');
23
+			if (callback) callback(response);
24
+		},
25
+		//slodon_直播_添加移动端直播页面
26
+		* add_goods({ payload, callback }, { call, put }) {
27
+			const response = yield call(sldCommonService, payload, 'post', 'v3/live/seller/goods/add');
28
+			if (callback) callback(response);
29
+		},
30
+		//slodon_直播_编辑移动端直播页面
31
+		* edit_m_live_page({ payload, callback }, { call, put }) {
32
+			const response = yield call(sldCommonService, payload, 'post', 'v3/live/seller/broad/wxBroadcastRoomEdit');
33
+			if (callback) callback(response);
34
+		},
35
+		//slodon_直播_删除移动端直播页面
36
+		* del_m_live_page({ payload, callback }, { call, put }) {
37
+			const response = yield call(sldCommonService, payload, 'get', 'v3/live/seller/goods/wxDelLive');
38
+			if (callback) callback(response);
39
+		},
40
+	},
41
+};

+ 41 - 0
seller/src/pages/live/models/mlive.js

@@ -0,0 +1,41 @@
1
+import { sldCommonService } from '@/utils/utils';
2
+
3
+export default {
4
+	
5
+	namespace: 'mlive',
6
+	state: {
7
+		loading: false,// 加载状态
8
+		data: {
9
+			list: [],
10
+			pagination: {},
11
+		},
12
+	},
13
+
14
+	effects: {
15
+		//slodon_直播_获取直播页列表 
16
+		* get_live_page_lists({ payload, callback }, { call, put }) {
17
+			const response = yield call(sldCommonService, payload, 'get', 'v3/live/seller/broad/list');
18
+			if (callback) callback(response);
19
+		},
20
+		//slodon_直播_添加移动端直播页面
21
+		* add_m_live_page({ payload, callback }, { call, put }) {
22
+			const response = yield call(sldCommonService, payload, 'post', 'v3/live/seller/broad/wxBroadcastRoomCreate');
23
+			if (callback) callback(response);
24
+		},
25
+		//slodon_直播_编辑移动端直播页面
26
+		* edit_m_live_page({ payload, callback }, { call, put }) {
27
+			const response = yield call(sldCommonService, payload, 'post', 'v3/live/seller/broad/wxBroadcastRoomEdit');
28
+			if (callback) callback(response);
29
+		},
30
+		//slodon_直播_删除移动端直播页面
31
+		* del_m_live_page({ payload, callback }, { call, put }) {
32
+			const response = yield call(sldCommonService, payload, 'get', 'v3/live/seller/broad/wxDelLive');
33
+			if (callback) callback(response);
34
+		},
35
+		//slodon_直播_直播添加商品
36
+		* add_live_goods({ payload, callback }, { call, put }) {
37
+			const response = yield call(sldCommonService, payload, 'get', 'v3/live/seller/broad/wxAddLiveGoods');
38
+			if (callback) callback(response);
39
+		},
40
+	},
41
+};

+ 196 - 0
seller/src/pages/live/models/product.js

@@ -0,0 +1,196 @@
1
+import { sldCommonService } from '@/utils/utils';
2
+import { sldComLanguage } from '@/utils/utils';
3
+
4
+export default {
5
+  namespace: 'product',
6
+  state: {
7
+    loading: false,//加载状态
8
+    data: {
9
+      list: [],
10
+      pagination: {},
11
+    },
12
+  },
13
+
14
+  effects: {
15
+     //slodon_获取分类列表_根据分类id获取下级分类
16
+    * get_cate_list_by_id({ payload, callback }, { call }) {
17
+      const response = yield call(sldCommonService, payload, 'get', `v3/goods/seller/goodsCategory/list`);
18
+      if (callback) callback(response);
19
+    },
20
+    //slodon_获取商品规格列表
21
+    * get_goods_spec_list({ payload, callback }, { call }) {
22
+      const response = yield call(sldCommonService, payload, 'get', `v3/goods/seller/goodsSpec/list`);
23
+      if (callback) callback(response);
24
+    },
25
+    //slodon_添加商品规格
26
+    * add_goods_spec({ payload, callback }, { call }) {
27
+      const response = yield call(sldCommonService, payload, 'post', `v3/goods/seller/goodsSpec/add`);
28
+      if (callback) callback(response);
29
+    },
30
+    //slodon_添加商品规格值
31
+    * add_goods_spec_val({ payload, callback }, { call }) {
32
+      const response = yield call(sldCommonService, payload, 'post', `v3/goods/seller/goodsSpec/addSpecValue`);
33
+      if (callback) callback(response);
34
+    },
35
+    //slodon_批量设置推荐/取消推荐商品
36
+    * set_goods_recommend({ payload, callback }, { call }) {
37
+      const response = yield call(sldCommonService, payload, 'post', `v3/goods/seller/goods/isRecommend`);
38
+      if (callback) callback(response);
39
+    },
40
+    //slodon_获取商品标签列表
41
+    * get_goods_label_lists({ payload, callback }, { call }) {
42
+      const response = yield call(sldCommonService, payload, 'get', `v3/goods/seller/goodsLabel/list`);
43
+      if (callback) callback(response);
44
+    },
45
+    //slodon_删除商品标签
46
+    * del_goods_label({ payload, callback }, { call }) {
47
+      const response = yield call(sldCommonService, payload, 'post', `v3/goods/admin/goodsLabel/del`);
48
+      if (callback) callback(response);
49
+    },
50
+    //slodon_添加商品标签
51
+    * add_goods_label({ payload, callback }, { call }) {
52
+      const response = yield call(sldCommonService, payload, 'post', `v3/goods/admin/goodsLabel/add`);
53
+      if (callback) callback(response);
54
+    },
55
+    //slodon_编辑商品标签
56
+    * edit_goods_label({ payload, callback }, { call }) {
57
+      const response = yield call(sldCommonService, payload, 'post', `v3/goods/admin/goodsLabel/edit`);
58
+      if (callback) callback(response);
59
+    },
60
+    //slodon_获取分类绑定的品牌和属性信息
61
+    * get_brand_attr_detail({ payload, callback }, { call }) {
62
+      const response = yield call(sldCommonService, payload, 'get', 'v3/goods/seller/goodsAttribute/listByCategoryId');
63
+      if (callback) callback(response);
64
+    },
65
+    //slodon_发布商品
66
+    * add_goods({ payload, callback }, { call }) {
67
+      const response = yield call(sldCommonService, payload, 'post', 'v3/goods/seller/goods/add', 'json');
68
+      if (callback) callback(response);
69
+    },
70
+    //slodon_获取店铺分类列表
71
+    * get_store_category_list({ payload, callback }, { call }) {
72
+      const response = yield call(sldCommonService, payload, 'get', 'v3/seller/seller/storeCategory/list');
73
+      if (callback) callback(response);
74
+    },
75
+    //slodon_获取商品详情
76
+    * get_goods_detail({ payload, callback }, { call }) {
77
+      const response = yield call(sldCommonService, payload, 'get', 'v3/goods/seller/goods/getGoodsInfo');
78
+      if (callback) callback(response);
79
+    },
80
+    //slodon_编辑商品
81
+    * edit_goods({ payload, callback }, { call }) {
82
+      const response = yield call(sldCommonService, payload, 'post', 'v3/goods/seller/goods/edit', 'json');
83
+      if (callback) callback(response);
84
+    },
85
+    //slodon_获取商品列表
86
+    * get_goods_lists({ payload, callback }, { call }) {
87
+      const response = yield call(sldCommonService, payload, 'get', 'v3/goods/seller/goods/list');
88
+      if (callback) callback(response);
89
+    },
90
+    //slodon_商品列表_下架商品
91
+    * lockup_goods({ payload, callback }, { call }) {
92
+      const response = yield call(sldCommonService, payload, 'post', `v3/goods/seller/goods/lockup`);
93
+      if (callback) callback(response);
94
+    },
95
+    //slodon_商品列表_上架商品
96
+    * up_goods({ payload, callback }, { call }) {
97
+      const response = yield call(sldCommonService, payload, 'post', `v3/goods/seller/goods/upperShelf`);
98
+      if (callback) callback(response);
99
+    },
100
+    //slodon_商品列表_删除商品
101
+    * del_goods({ payload, callback }, { call }) {
102
+      const response = yield call(sldCommonService, payload, 'post', `v3/goods/seller/goods/deleteGoods`);
103
+      if (callback) callback(response);
104
+    },
105
+    // slodon_获取关联版式列表
106
+    * get_related_template_lists({ payload, callback }, { call }) {
107
+      const response = yield call(sldCommonService, payload, 'get', `v3/goods/seller/goodsRelatedTemplate/list`);
108
+      if (callback) callback(response);
109
+    },
110
+    //slodon_ 添加关联版式
111
+    * add_related_template({ payload, callback }, { call }) {
112
+      const response = yield call(sldCommonService, payload, 'post', `v3/goods/seller/goodsRelatedTemplate/add`);
113
+      if (callback) callback(response);
114
+    },
115
+    //slodon_获取关联版式详情
116
+    * get_related_template_detail({ payload, callback }, { call }) {
117
+      const response = yield call(sldCommonService, payload, 'get', `v3/goods/seller/goodsRelatedTemplate/details`);
118
+      if (callback) callback(response);
119
+    },
120
+    //slodon_ 编辑关联版式
121
+    * edit_related_template({ payload, callback }, { call }) {
122
+      const response = yield call(sldCommonService, payload, 'post', `v3/goods/seller/goodsRelatedTemplate/edit`);
123
+      if (callback) callback(response);
124
+    },
125
+    //slodon_删除关联版式
126
+    * del_related_template({ payload, callback }, { call }) {
127
+      const response = yield call(sldCommonService, payload, 'post', `v3/goods/seller/goodsRelatedTemplate/delete`);
128
+      if (callback) callback(response);
129
+    },
130
+    //slodon_为商品批量设置关联版式
131
+    * set_related_template({ payload, callback }, { call }) {
132
+      const response = yield call(sldCommonService, payload, 'post', `v3/goods/seller/goods/setRelatedTemplate`);
133
+      if (callback) callback(response);
134
+    },
135
+    //slodon_获取属性分组列表
136
+    * get_attribute_group_lists({ payload, callback }, { call }) {
137
+      const response = yield call(sldCommonService, payload, 'get', 'v3/goods/seller/goodsParameterGroup/list');
138
+      if (callback) callback(response);
139
+    },
140
+    //slodon_获取可用的属性分组列表
141
+    * get_attribute_group_lists_can_use({ payload, callback }, { call }) {
142
+      const response = yield call(sldCommonService, payload, 'get', 'v3/goods/seller/goodsParameterGroup/canUseList');
143
+      if (callback) callback(response);
144
+    },
145
+    //slodon_添加属性分组
146
+    * add_attribute_group({ payload, callback }, { call }) {
147
+      const response = yield call(sldCommonService, payload, 'post', 'v3/goods/seller/goodsParameterGroup/add');
148
+      if (callback) callback(response);
149
+    },
150
+    //slodon_编辑属性分组
151
+    * edit_attribute_group({ payload, callback }, { call }) {
152
+      const response = yield call(sldCommonService, payload, 'post', 'v3/goods/seller/goodsParameterGroup/edit');
153
+      if (callback) callback(response);
154
+    },
155
+    //slodon_删除属性分组
156
+    * del_attribute_group({ payload, callback }, { call }) {
157
+      const response = yield call(sldCommonService, payload, 'post', 'v3/goods/seller/goodsParameterGroup/del');
158
+      if (callback) callback(response);
159
+    },
160
+    //slodon_获取属性列表
161
+    * get_attribute_lists({ payload, callback }, { call }) {
162
+      const response = yield call(sldCommonService, payload, 'get', 'v3/goods/seller/goodsParameter/list');
163
+      if (callback) callback(response);
164
+    },
165
+    //slodon_获取可用的属性列表
166
+    * get_attribute_lists_can_use({ payload, callback }, { call }) {
167
+      const response = yield call(sldCommonService, payload, 'get', 'v3/goods/seller/goodsParameter/canUseList');
168
+      if (callback) callback(response);
169
+    },
170
+    //slodon_添加属性
171
+    * add_attribute({ payload, callback }, { call }) {
172
+      const response = yield call(sldCommonService, payload, 'post', 'v3/goods/seller/goodsParameter/add');
173
+      if (callback) callback(response);
174
+    },
175
+    //slodon_编辑属性
176
+    * edit_attribute({ payload, callback }, { call }) {
177
+      const response = yield call(sldCommonService, payload, 'post', 'v3/goods/seller/goodsParameter/edit');
178
+      if (callback) callback(response);
179
+    },
180
+    //slodon_删除属性
181
+    * del_attribute({ payload, callback }, { call }) {
182
+      const response = yield call(sldCommonService, payload, 'post', 'v3/goods/seller/goodsParameter/del');
183
+      if (callback) callback(response);
184
+    },
185
+    //slodon_申请通过的商品分类
186
+    * get_system_seller_cate_list({ payload, callback }, { call }) {
187
+      const response = yield call(sldCommonService, payload, 'get', 'v3/goods/seller/goodsCategory/cateList');
188
+      if (callback) callback(response);
189
+    },
190
+    //slodon_验证是否允许发布商品
191
+    * check_is_allow_add_goods({ payload, callback }, { call }) {
192
+      const response = yield call(sldCommonService, payload, 'get', 'v3/goods/seller/goods/enablePublish');
193
+      if (callback) callback(response);
194
+    },
195
+  },
196
+};

+ 3 - 3
seller/src/pages/settledManage/openUp/open_up.js

@@ -33,7 +33,7 @@ export default class openUp extends Component {
33 33
       submiting: false,
34 34
       check_state: getSettleData('state'),
35 35
       detail: {},//入驻详情
36
-      pay_method: 'alipay',//支付方式
36
+      pay_method: 'wx',//支付方式
37 37
       apply_progress: {},//入驻进度
38 38
       store_pay_data: [{
39 39
         type: 'show_text',
@@ -289,11 +289,11 @@ export default class openUp extends Component {
289 289
             <div>
290 290
               <div className={styles.settle_pay}>
291 291
                 <Radio.Group onChange={this.handlePayMethod} value={pay_method}>
292
-                  <Radio value={'alipay'}>
292
+                  {/* <Radio value={'alipay'}>
293 293
                     <div className={`${styles.pay_item} ${global.flex_row_center_center} ${styles.pay_item_mr}`}>
294 294
                       <img className={styles.pay_item_img} src={require('@/assets/alipay.png')}/>
295 295
                     </div>
296
-                  </Radio>
296
+                  </Radio> */}
297 297
                   <Radio value={'wx'}>
298 298
                     <div className={`${styles.pay_item} ${global.flex_row_center_center}`}>
299 299
                       <img className={styles.pay_item_img} src={require('@/assets/wx.png')}/>