林凡 преди 5 години
родител
ревизия
5e41e586cd
променени са 4 файла, в които са добавени 180 реда и са изтрити 12 реда
  1. 69
    0
      src/pages/carouselFigure/SelectH5.jsx
  2. 53
    11
      src/pages/carouselFigure/editAdvertising.jsx
  3. 46
    1
      src/pages/carouselFigure/editCarousel.jsx
  4. 12
    0
      src/services/apis.js

+ 69
- 0
src/pages/carouselFigure/SelectH5.jsx Целия файл

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 Целия файл

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

+ 46
- 1
src/pages/carouselFigure/editCarousel.jsx Целия файл

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

+ 12
- 0
src/services/apis.js Целия файл

930
     action: 'admin.taShareRecord.verificate.put',
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
  third: {
945
  third: {
934
   thirdPartyMiniapp: {
946
   thirdPartyMiniapp: {
935
     url: `${prefix}/thirdPartyMiniapp`,
947
     url: `${prefix}/thirdPartyMiniapp`,