林凡 5 anos atrás
pai
commit
5e41e586cd

+ 69
- 0
src/pages/carouselFigure/SelectH5.jsx Ver arquivo

@@ -0,0 +1,69 @@
1
+import React, { useState, useEffect } from 'react';
2
+import { Select, Modal } from 'antd';
3
+import { apis, fetch } from '../../utils/request';
4
+
5
+const getH5List = fetch(apis.h5Activity.EffectiveList)
6
+
7
+export default props => {
8
+  const {
9
+    value,
10
+    onChange,
11
+    ...rest
12
+  } = props;
13
+
14
+  const [list, setList] = useState([]);
15
+  const [visible, setVisible] = useState(false);
16
+  const [group, setGroup] = useState({ groupId: undefined, groupName: '请选择H5' })
17
+  const getGroupTitle = val => {
18
+    return (list.filter(x => x.drainageId == val)[0] || {}).name || '请选择H5'
19
+  }
20
+  const updateGroup = val => setGroup({ groupId: val, groupName: getGroupTitle(val) })
21
+
22
+  useEffect(() => {
23
+    getH5List({
24
+      params: {
25
+        pageNum: 1,
26
+        pageSize: 999,
27
+      },
28
+    }).then(data => {
29
+      setList(data.records || [])
30
+    })
31
+  }, []);
32
+
33
+  if (value !== group.groupId) {
34
+    updateGroup(value);
35
+  }
36
+
37
+  const handleChange = val => {
38
+      onChange(val)
39
+  }
40
+
41
+  return (
42
+    <div>
43
+      <div onClick={() => setVisible(true)}>{group.groupName}</div>
44
+      <Modal
45
+        title="请选择H5"
46
+        visible={visible}
47
+        onOk={() => {
48
+          updateGroup(value)
49
+          onChange(value)
50
+          setVisible(false)
51
+        }}
52
+        onCancel={() => setVisible(false)}
53
+      >
54
+        <Select
55
+          showSearch
56
+          value={value ? parseInt(value) : undefined}
57
+          onChange={handleChange}
58
+          style={{ width: '90%' }}
59
+          filterOption={(input, option) =>
60
+            option.props.children.toLowerCase().indexOf(input.toLowerCase()) >= 0
61
+          }>
62
+          {
63
+            list.map(x => (<Select.Option key={x.drainageId} value={x.drainageId}>{x.name}</Select.Option>))
64
+          }
65
+        </Select>
66
+      </Modal>
67
+    </div>
68
+  );
69
+}

+ 53
- 11
src/pages/carouselFigure/editAdvertising.jsx Ver arquivo

@@ -5,6 +5,7 @@ import styles from '../style/GoodsList.less';
5 5
 import moment from 'moment';
6 6
 import router from 'umi/router';
7 7
 import BuildSelect from '../../components/SelectButton/BuildSelect'
8
+import CitySelect from '../../components/SelectButton/CitySelect'
8 9
 import { FieldTypes, createForm } from '../../components/XForm';
9 10
 import Wangedit from '../../components/Wangedit/Wangedit';
10 11
 import SelectActivity from './SelectActivity';
@@ -13,7 +14,7 @@ import apis from '../../services/apis';
13 14
 import request from '../../utils/request'
14 15
 import SelectHelp from './SelectHelp';
15 16
 import SelectGroup from './SelectGroup';
16
-
17
+import SelectH5 from './SelectH5';
17 18
 /**
18 19
  *
19 20
  *
@@ -27,8 +28,13 @@ import SelectGroup from './SelectGroup';
27 28
   let helpVisible = false
28 29
   let groupVisible = false
29 30
   let buildingId = ''
31
+  let isHaveActive=true
30 32
 
31 33
   const setExtraData = (data) => {
34
+    isHaveActive=data.isHaveActive
35
+    if(!isHaveActive) {
36
+      data.contentType=null
37
+    }
32 38
     contentVisible = data.contentType === 'other';
33 39
     activityVisible = data.contentType === 'activity';
34 40
     newsVisible = data.contentType === 'news';
@@ -37,7 +43,7 @@ import SelectGroup from './SelectGroup';
37 43
 
38 44
     buildingId = data.buildingId
39 45
   }
40
-  
46
+
41 47
   const handleFormValueChange = (props, changedValues, allValues) => {
42 48
     setExtraData(allValues)
43 49
   }
@@ -48,12 +54,12 @@ import SelectGroup from './SelectGroup';
48 54
     const [ tab, changeTab ] = useState('basic')
49 55
     const contentId = props.location.query.contentId
50 56
     const [ data, setData ] = useState({})
51
-  
57
+
52 58
     if(contentId){
53 59
       useEffect(() => {
54 60
         getDetail(contentId);
55 61
       },[])
56
-  
62
+
57 63
       // 查询列表
58 64
       const getDetail = (contentId) => {
59 65
         request({ ...apis.carsuseFigure.getExtendContent,urlData:{id: contentId}}).then((data) => {
@@ -62,23 +68,43 @@ import SelectGroup from './SelectGroup';
62 68
         })
63 69
       }
64 70
     }
65
-  
71
+
66 72
     const cancelPage = () =>{
67 73
       router.push({
68 74
         pathname: '/carouselFigure/advertisingList',
69 75
       });
70 76
     }
71
-   
77
+
72 78
     const fields = [
79
+      {
80
+        label: '项目活动',
81
+        name: 'isHaveActive',
82
+        type: FieldTypes.Switch,
83
+        value:isHaveActive,
84
+        rules: [
85
+          { required: true,message: '是否城市活动' },
86
+        ],
87
+      },
73 88
       {
74 89
         label: '所属项目',
75 90
         name: 'buildingId',
76 91
         render: <BuildSelect />,
77 92
         value: data.buildingId,
93
+        hidden: () => !isHaveActive,
78 94
         rules: [
79 95
           { required: true, message: '请选择所属项目' },
80 96
         ],
81 97
       },
98
+      {
99
+        label: '展示城市',
100
+        name: 'cityId',
101
+        render: <CitySelect />,
102
+        hidden: () => isHaveActive,
103
+        value: data.cityId,
104
+        rules: [
105
+          { required: true, message: '请选择展示城市' },
106
+        ],
107
+      },
82 108
       {
83 109
         label: '开屏广告',
84 110
         name: 'image',
@@ -89,10 +115,21 @@ import SelectGroup from './SelectGroup';
89 115
           { required: true, message: '请上传图片' },
90 116
         ],
91 117
       },
118
+      {
119
+        label: '是否发布H5',
120
+        name: 'targetId',
121
+        render: <SelectH5/>,
122
+        hidden: () => isHaveActive,
123
+        value: data.targetId,
124
+        rules: [
125
+          { required: false, message: '请选择发布H5' },
126
+        ],
127
+      },
92 128
       {
93 129
         label: '标题',
94 130
         name: 'title',
95 131
         type: FieldTypes.Text,
132
+        hidden: () => !isHaveActive,
96 133
         value: data.title,
97 134
         rules: [
98 135
           { required: true, message: '请输入标题' },
@@ -101,6 +138,7 @@ import SelectGroup from './SelectGroup';
101 138
       {
102 139
         label: '类型',
103 140
         name: 'contentType',
141
+        hidden: () => !isHaveActive,
104 142
         type: FieldTypes.Select,
105 143
         dict: [{
106 144
           label: '常规活动',
@@ -185,6 +223,7 @@ import SelectGroup from './SelectGroup';
185 223
         label: '状态',
186 224
         name: 'status',
187 225
         type: FieldTypes.Select,
226
+        hidden: () => !isHaveActive,
188 227
         dict: [{
189 228
           label: "启用",
190 229
           value: 1
@@ -196,9 +235,12 @@ import SelectGroup from './SelectGroup';
196 235
         value: data.status != null ? data.status : 1,
197 236
       },
198 237
     ]
199
-    
200
-    const handleSubmit = val => { 
238
+
239
+    const handleSubmit = val => {
201 240
       val.showType = 'screen'
241
+      if(!val.isHaveActive&&val.targetId) {
242
+        val.contentType='h5'
243
+      }
202 244
       if(contentId){
203 245
         request({ ...apis.carsuseFigure.updataExtendContent,urlData:{id: contentId}, data: val,}).then((data) => {
204 246
           cancelPage()
@@ -213,12 +255,12 @@ import SelectGroup from './SelectGroup';
213 255
         })
214 256
       }
215 257
     }
216
-  
217
-  
258
+
259
+
218 260
     return (
219 261
       <XForm onSubmit={handleSubmit} onCancel={cancelPage} onValuesChange={handleFormValueChange} fields={fields}></XForm>
220 262
     );
221 263
    }
222 264
  }
223
- 
265
+
224 266
 export default createEditor()

+ 46
- 1
src/pages/carouselFigure/editCarousel.jsx Ver arquivo

@@ -5,6 +5,7 @@ import moment from 'moment';
5 5
 import router from 'umi/router';
6 6
 import styles from '../style/GoodsList.less';
7 7
 import BuildSelect from '../../components/SelectButton/BuildSelect'
8
+import CitySelect from '../../components/SelectButton/CitySelect'
8 9
 import { createForm, FieldTypes } from '../../components/XForm';
9 10
 import Wangedit from '../../components/Wangedit/Wangedit'
10 11
 import apis from '../../services/apis';
@@ -13,6 +14,7 @@ import SelectHelp from './SelectHelp';
13 14
 import SelectGroup from './SelectGroup';
14 15
 import SelectNews from './SelectNews';
15 16
 import SelectActivity from './SelectActivity';
17
+import SelectH5 from './SelectH5';
16 18
 
17 19
 const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
18 20
 /**
@@ -29,9 +31,15 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
29 31
   let groupVisible = false
30 32
   let buildingId = ''
31 33
   let locationType = false
34
+  let isHaveActive=true
32 35
 
33
-  const setExtraData = data => {
36
+  const setExtraData = (data) => {
34 37
     console.log(data, 'data');
38
+    isHaveActive=data.isHaveActive
39
+    if(!isHaveActive) {
40
+      data.contentType=null
41
+    }
42
+
35 43
     contentVisible = data.contentType === 'other';
36 44
     activityVisible = data.contentType === 'activity';
37 45
     newsVisible = data.contentType === 'news';
@@ -54,6 +62,7 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
54 62
     const [tab, changeTab] = useState('basic')
55 63
     const { contentId } = props.location.query
56 64
     const [data, setData] = useState({})
65
+
57 66
     if (contentId) {
58 67
       // eslint-disable-next-line react-hooks/rules-of-hooks
59 68
       useEffect(() => {
@@ -77,15 +86,35 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
77 86
     }
78 87
 
79 88
       const fields = [
89
+        {
90
+          label: '项目活动',
91
+          name: 'isHaveActive',
92
+          type: FieldTypes.Switch,
93
+          value:isHaveActive,
94
+          rules: [
95
+            { required: true,message: '是否城市活动' },
96
+          ],
97
+        },
80 98
         {
81 99
           label: '所属项目',
82 100
           name: 'buildingId',
83 101
           render: <BuildSelect />,
102
+          hidden: () => !isHaveActive,
84 103
           value: data.buildingId,
85 104
           rules: [
86 105
             { required: true, message: '请选择所属项目' },
87 106
           ],
88 107
         },
108
+        {
109
+          label: '展示城市',
110
+          name: 'cityId',
111
+          render: <CitySelect />,
112
+          hidden: () => isHaveActive,
113
+          value: data.cityId,
114
+          rules: [
115
+            { required: true, message: '请选择展示城市' },
116
+          ],
117
+        },
89 118
         {
90 119
           label: '发布位置',
91 120
           name: 'showPosition',
@@ -113,11 +142,22 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
113 142
             { required: true, message: '请上传轮播图' },
114 143
           ],
115 144
         },
145
+        {
146
+          label: '是否发布H5',
147
+          name: 'targetId',
148
+          render: <SelectH5/>,
149
+          hidden: () => isHaveActive,
150
+          value: data.targetId,
151
+          rules: [
152
+            { required: false, message: '请选择发布H5' },
153
+          ],
154
+        },
116 155
         {
117 156
           label: '标题',
118 157
           name: 'title',
119 158
           type: FieldTypes.Text,
120 159
           value: data.title,
160
+          hidden: () => !isHaveActive,
121 161
           rules: [
122 162
             { required: true, message: '请输入标题' },
123 163
           ],
@@ -126,6 +166,7 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
126 166
           label: '类型',
127 167
           name: 'contentType',
128 168
           type: FieldTypes.Select,
169
+          hidden: () => !isHaveActive,
129 170
           dict: [{
130 171
             label: '常规活动',
131 172
             value: 'activity',
@@ -209,6 +250,7 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
209 250
           label: '状态',
210 251
           name: 'status',
211 252
           type: FieldTypes.Select,
253
+          hidden: () => !isHaveActive,
212 254
           dict: [{
213 255
             label: '启用',
214 256
             value: 1,
@@ -223,6 +265,9 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
223 265
 
224 266
       const handleSubmit = val => {
225 267
         val.showType = 'banner'
268
+        if(!val.isHaveActive&&val.targetId) {
269
+          val.contentType='h5'
270
+        }
226 271
         if (contentId) {
227 272
           request({ ...apis.carsuseFigure.updataExtendContent, urlData: { id: contentId }, data: val }).then(data => {
228 273
             cancelPage()

+ 12
- 0
src/services/apis.js Ver arquivo

@@ -930,6 +930,18 @@ export default {
930 930
     action: 'admin.taShareRecord.verificate.put',
931 931
   }
932 932
  },
933
+ h5Activity: {
934
+  list: {
935
+    url: `${prefix}/taDrainage`,
936
+    method: 'get',
937
+    action: 'admin.taDrainage.get',
938
+  },
939
+  EffectiveList: {
940
+    url: `${prefix}/taDrainage`,
941
+    method: 'get',
942
+    action: 'admin.taDrainage.get',
943
+  }
944
+ },
933 945
  third: {
934 946
   thirdPartyMiniapp: {
935 947
     url: `${prefix}/thirdPartyMiniapp`,