Преглед изворни кода

Merge branch 'master' of http://git.ycjcjy.com/zhiyuxing/estateagents-admin-manager

许静 пре 5 година
родитељ
комит
e2f249caa5

+ 1
- 1
config/config.js Прегледај датотеку

@@ -510,7 +510,7 @@ export default {
510 510
 
511 511
   proxy: {
512 512
     '/api/': {
513
-      target: 'http://192.168.0.11:8080/',
513
+      target: 'http://localhost:8080/',
514 514
       changeOrigin: true,
515 515
       // pathRewrite: { '^/server': '' },
516 516
     },

+ 2
- 6
src/components/SelectButton/BuildSelect.jsx Прегледај датотеку

@@ -1,6 +1,6 @@
1 1
 import React, { useState, useEffect, useRef } from 'react';
2 2
 import { Select } from 'antd';
3
-
3
+import apis from '../../services/apis';
4 4
 import request from '../../utils/request'
5 5
 
6 6
 const { Option } = Select;
@@ -33,11 +33,7 @@ const BuildingSelect = (props) => {
33 33
   },[])
34 34
 
35 35
   const getCityList = (e) => {
36
-    request({
37
-        url: '/api/admin/buildinglist/select',
38
-        method: 'GET',
39
-        params: {pageNum: 1,pageSize: 999},
40
-    }).then((data) => {
36
+    request({ ...apis.building.buildingSelect, params: {pageNum: 1,pageSize: 999}, }).then((data) => {
41 37
         setData(data.records)
42 38
     })
43 39
   }

+ 1
- 0
src/components/SelectButton/CitySelect.jsx Прегледај датотеку

@@ -23,6 +23,7 @@ const CitySelect = (props) => {
23 23
         url: '/api/admin/tdCity',
24 24
         method: 'GET',
25 25
         params: {leveltype: 2, pageNum: 1,pageSize: 999},
26
+        action: 'select',
26 27
     }).then((data) => {
27 28
         setData(data)
28 29
     })

+ 1
- 0
src/components/SelectButton/NewTypeSelect.jsx Прегледај датотеку

@@ -23,6 +23,7 @@ const NewsTypeSelect = (props) => {
23 23
         url: '/api/admin/taNewsType',
24 24
         method: 'GET',
25 25
         params: {pageNum: 1,pageSize: 999},
26
+        action: 'select',
26 27
     }).then((data) => {
27 28
         setData(data.records)
28 29
     })

+ 22
- 8
src/pages/activity/ActivityList.jsx Прегледај датотеку

@@ -7,7 +7,8 @@ import moment from 'moment';
7 7
 import SelectCity from '../../components/SelectButton/CitySelect'
8 8
 import BuildSelect from '../../components/SelectButton/BuildSelect'
9 9
 import apis from '../../services/apis';
10
-import request from '../../utils/request'
10
+import request from '../../utils/request';
11
+import AuthButton from '@/components/AuthButton';
11 12
 
12 13
 const { Option } = Select;
13 14
 const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
@@ -96,12 +97,23 @@ const toEditGoods = (dynamicId) => () => {
96 97
       dataIndex: 'handle',
97 98
       key: 'handle',
98 99
       align: 'center',
99
-      render: (x,row) => <><span style={{ color: '#1990FF'}} onClick={getSignList.bind(this, row.dynamicId)}>{row.isEnlist == '1' || row.isEnlist == '2' ? "报名记录" : ""}<Icon type="snippets" className={styles.shoppingCart} /></span>
100
-                           <span style={{ color: '#1990FF' }} onClick={sendOrPublicDynamic.bind(this,row)}>{ row.status === 1 ? '取消发布' : '发布' }<Icon type="close-circle" className={styles.edit} /></span>
101
-                           <span style={{ color: '#1990FF' }} onClick={finishDynamic.bind(this,row)}>结束活动<Icon type="poweroff" className={styles.edit} /></span>
102
-                           <span style={{ color: '#1990FF', marginRight: '20px' }} onClick={topDynamic(row)}>{ row.weight === 1 ? '取消置顶' : '置顶' }<Icon type="vertical-align-top" className={styles.edit} /></span>
103
-                           <span style={{ color: '#FF925C' }} onClick={toEditGoods(row.dynamicId)}>编辑<Icon type="form" className={styles.edit} /></span>
104
-                         </>
100
+      render: (x,row) => (
101
+        <>
102
+          <AuthButton name="admin.SignList.get" noRight={null}>
103
+            <span style={{ color: '#1990FF'}} onClick={getSignList.bind(this, row.dynamicId)}>{row.isEnlist == '1' || row.isEnlist == '2' ? "报名记录" : ""}<Icon type="snippets" className={styles.shoppingCart} /></span>
104
+          </AuthButton>
105
+          <AuthButton name="admin.buildingDynamic.send.dynamicId.put" noRight={null}>
106
+            <span style={{ color: '#1990FF' }} onClick={sendOrPublicDynamic.bind(this,row)}>{ row.status === 1 ? '取消发布' : '发布' }<Icon type="close-circle" className={styles.edit} /></span>
107
+          </AuthButton>
108
+          <AuthButton name="admin.buildingDynamic.finish.put" noRight={null}>
109
+            <span style={{ color: '#1990FF' }} onClick={finishDynamic.bind(this,row)}>结束活动<Icon type="poweroff" className={styles.edit} /></span>
110
+          </AuthButton>
111
+          <AuthButton name="admin.buildingDynamic.update.put" noRight={null}>
112
+            <span style={{ color: '#1990FF', marginRight: '20px' }} onClick={topDynamic(row)}>{ row.weight === 1 ? '取消置顶' : '置顶' }<Icon type="vertical-align-top" className={styles.edit} /></span>
113
+            <span style={{ color: '#FF925C' }} onClick={toEditGoods(row.dynamicId)}>编辑<Icon type="form" className={styles.edit} /></span>
114
+          </AuthButton>
115
+        </>
116
+      )
105 117
     },
106 118
   ];
107 119
   
@@ -232,7 +244,9 @@ const handleSubmit = (e, props) => {
232 244
           </Button>
233 245
         </Form.Item>
234 246
       </Form>
235
-      <Button type="danger" className={styles.addBtn} onClick={toEditGoods()}>新增</Button>
247
+      <AuthButton name="admin.buildingDynamic.add.post" noRight={null}>
248
+        <Button type="danger" className={styles.addBtn} onClick={toEditGoods()}>新增</Button>
249
+      </AuthButton>
236 250
       <Table dataSource={data.list} columns={columns} pagination={false}/>
237 251
       <div style={{ display: 'flex', justifyContent: 'flex-end', marginTop: '30px' }}>
238 252
         <Pagination showQuickJumper defaultCurrent={1} total={data.total} onChange={changePageNum} />

+ 0
- 2
src/pages/building/list/index.jsx Прегледај датотеку

@@ -285,11 +285,9 @@ function body(props) {
285 285
           )}
286 286
         </Form.Item>
287 287
         <Form.Item>
288
-          <AuthButton name="admin.buildinglist.get" noRight={null}>
289 288
             <Button type="primary" htmlType="submit">
290 289
               搜索
291 290
             </Button>
292
-          </AuthButton>
293 291
         </Form.Item>
294 292
       </Form>
295 293
 

+ 13
- 6
src/pages/carouselFigure/advertisingList.jsx Прегледај датотеку

@@ -7,7 +7,8 @@ import moment from 'moment';
7 7
 import SelectCity from '../../components/SelectButton/CitySelect'
8 8
 import BuildSelect from '../../components/SelectButton/BuildSelect'
9 9
 import apis from '../../services/apis';
10
-import request from '../../utils/request'
10
+import request from '../../utils/request';
11
+import AuthButton from '@/components/AuthButton';
11 12
 
12 13
 const { Option } = Select;
13 14
 const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
@@ -80,10 +81,14 @@ const toEdit = (contentId) => () => {
80 81
       dataIndex: 'handle',
81 82
       key: 'handle',
82 83
       align: 'center',
83
-      render: (x,row) => <>
84
-                           <span style={{ color: '#1990FF', marginRight: '20px' }} onClick={changeStatus(row)}>{ row.status === 1 ? '禁用' : '启用' }<Icon type="vertical-align-top" className={styles.edit} /></span>
85
-                           <span style={{ color: '#FF925C' }} onClick={toEdit(row.contentId)}>编辑<Icon type="form" className={styles.edit} /></span>
86
-                         </>
84
+      render: (x,row) => (
85
+        <>
86
+          <AuthButton name="admin.extendContent.id.put" noRight={null}>
87
+            <span style={{ color: '#1990FF', marginRight: '20px' }} onClick={changeStatus(row)}>{ row.status === 1 ? '禁用' : '启用' }<Icon type="vertical-align-top" className={styles.edit} /></span>
88
+            <span style={{ color: '#FF925C' }} onClick={toEdit(row.contentId)}>编辑<Icon type="form" className={styles.edit} /></span>
89
+          </AuthButton>
90
+        </>
91
+      )
87 92
     },
88 93
   ];
89 94
   
@@ -201,7 +206,9 @@ const handleSubmit = (e, props) => {
201 206
           </Button>
202 207
         </Form.Item>
203 208
       </Form>
204
-      <Button type="danger" className={styles.addBtn} onClick={toEdit()}>新增</Button>
209
+      <AuthButton name="admin.extendContent.post" noRight={null}>
210
+        <Button type="danger" className={styles.addBtn} onClick={toEdit()}>新增</Button>
211
+      </AuthButton>
205 212
       <Table dataSource={data.records} columns={columns} pagination={false}/>
206 213
       <div style={{ display: 'flex', justifyContent: 'flex-end', marginTop: '30px' }}>
207 214
         <Pagination showQuickJumper defaultCurrent={1} total={data.total} onChange={changePageNum} />

+ 13
- 6
src/pages/carouselFigure/carouselFigureList.jsx Прегледај датотеку

@@ -7,7 +7,8 @@ import moment from 'moment';
7 7
 import SelectCity from '../../components/SelectButton/CitySelect'
8 8
 import BuildSelect from '../../components/SelectButton/BuildSelect'
9 9
 import apis from '../../services/apis';
10
-import request from '../../utils/request'
10
+import request from '../../utils/request';
11
+import AuthButton from '@/components/AuthButton';
11 12
 
12 13
 const { Option } = Select;
13 14
 const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
@@ -80,10 +81,14 @@ const toEditCarouse = (contentId) => () => {
80 81
       dataIndex: 'handle',
81 82
       key: 'handle',
82 83
       align: 'center',
83
-      render: (x,row) => <>
84
-                           <span style={{ color: '#1990FF', marginRight: '20px' }} onClick={changeStatus(row)}>{ row.status === 1 ? '禁用' : '启用' }<Icon type="vertical-align-top" className={styles.edit} /></span>
85
-                           <span style={{ color: '#FF925C' }} onClick={toEditCarouse(row.contentId)}>编辑<Icon type="form" className={styles.edit} /></span>
86
-                         </>
84
+      render: (x,row) => (
85
+        <>
86
+          <AuthButton name="admin.extendContent.id.put" noRight={null}>
87
+            <span style={{ color: '#1990FF', marginRight: '20px' }} onClick={changeStatus(row)}>{ row.status === 1 ? '禁用' : '启用' }<Icon type="vertical-align-top" className={styles.edit} /></span>
88
+            <span style={{ color: '#FF925C' }} onClick={toEditCarouse(row.contentId)}>编辑<Icon type="form" className={styles.edit} /></span>
89
+          </AuthButton>
90
+        </>
91
+      )
87 92
     },
88 93
   ];
89 94
   
@@ -201,7 +206,9 @@ const handleSubmit = (e, props) => {
201 206
           </Button>
202 207
         </Form.Item>
203 208
       </Form>
204
-      <Button type="danger" className={styles.addBtn} onClick={toEditCarouse()}>新增</Button>
209
+      <AuthButton name="admin.extendContent.post" noRight={null}>
210
+        <Button type="danger" className={styles.addBtn} onClick={toEditCarouse()}>新增</Button>
211
+      </AuthButton>
205 212
       <Table dataSource={data.records} columns={columns} pagination={false}/>
206 213
       <div style={{ display: 'flex', justifyContent: 'flex-end', marginTop: '30px' }}>
207 214
         <Pagination showQuickJumper defaultCurrent={1} total={data.total} onChange={changePageNum} />

+ 10
- 3
src/pages/channel/channelList.jsx Прегледај датотеку

@@ -4,7 +4,8 @@ import { FormattedMessage } from 'umi-plugin-react/locale';
4 4
 import channels from './channelList.less';
5 5
 import router from 'umi/router';
6 6
 import apis from '../../services/apis';
7
-import request from '../../utils/request'
7
+import request from '../../utils/request';
8
+import AuthButton from '@/components/AuthButton';
8 9
 
9 10
 const { Option } = Select;
10 11
 
@@ -81,7 +82,11 @@ const columns = [
81 82
     dataIndex: '',
82 83
     key: '',
83 84
     align: 'center',
84
-    render: (text, record) => <a style={{ color: '#66B3FF' }} onClick={() => toedit(record.channelId)} >编辑</a>,
85
+    render: (text, record) => (
86
+      <AuthButton name="admin.channel.id.put" noRight={null}>
87
+        <a style={{ color: '#66B3FF' }} onClick={() => toedit(record.channelId)} >编辑</a>
88
+      </AuthButton>
89
+    )
85 90
   },
86 91
 ];
87 92
 
@@ -170,7 +175,9 @@ const header = props => {
170 175
           {/* <Button onClick={() => reset() }>重置</Button> */}
171 176
         </div>
172 177
       </div>
173
-      <Button type="danger" onClick={toAdd} className={channels.about} >新增</Button>
178
+      <AuthButton name="admin.channel.post" noRight={null}>
179
+        <Button type="danger" onClick={toAdd} className={channels.about} >新增</Button>
180
+      </AuthButton>
174 181
       <Table dataSource={data.result.records} columns={columns} pagination={{ pageSize: 10, total: data.result.total, onChange }} />
175 182
     </>
176 183
   )

+ 0
- 2
src/pages/customer/customerlist/index.jsx Прегледај датотеку

@@ -254,11 +254,9 @@ function body(props) {
254 254
           )}
255 255
         </Form.Item>
256 256
         <Form.Item>
257
-          <AuthButton name="admin.customer.recommend.get" noRight={null}>
258 257
             <Button type="primary" htmlType="submit" >
259 258
               查询
260 259
             </Button>
261
-          </AuthButton>
262 260
         </Form.Item>
263 261
       </Form>
264 262
 

+ 0
- 2
src/pages/customer/independentList/index.jsx Прегледај датотеку

@@ -410,11 +410,9 @@ function body(props) {
410 410
           )}
411 411
         </Form.Item>
412 412
         <Form.Item>
413
-          <AuthButton name="admin.customer.agents.get" noRight={null}>
414 413
             <Button type="primary" htmlType="submit" className={Styles.SubmitButton}>
415 414
               搜索
416 415
             </Button>
417
-          </AuthButton>
418 416
         </Form.Item>
419 417
       </Form>
420 418
 

+ 32
- 2
src/pages/customer/recommendCustomer/index.jsx Прегледај датотеку

@@ -6,6 +6,7 @@ import apis from '../../../services/apis';
6 6
 import Styles from './style.less';
7 7
 import { router } from 'umi';
8 8
 import AuthButton from '@/components/AuthButton';
9
+import axios from 'umi-request';
9 10
 
10 11
 
11 12
 const { Option } = Select;
@@ -77,6 +78,34 @@ function body(props) {
77 78
     })
78 79
   }
79 80
 
81
+  /**
82
+   *导出数据(推荐用户)
83
+   *
84
+   */
85
+  function exportRecommendCustomer() {
86
+    axios(apis.customer.customerRecommendRecommenderExport.url, {
87
+      ...apis.customer.customerRecommendRecommenderExport, responseType: 'blob',
88
+    }).then(response => {
89
+      // console.log('response: ', response)
90
+      download(response)
91
+    }).catch(error => {
92
+
93
+    })
94
+  }
95
+
96
+  function download(data) {
97
+    if (!data) {
98
+      return
99
+    }
100
+    const url = window.URL.createObjectURL(new Blob([data]))
101
+    const link = document.createElement('a')
102
+    link.style.display = 'none'
103
+    link.href = url
104
+    link.setAttribute('download', '推荐客户.xlsx')
105
+    document.body.append(link)
106
+    link.click()
107
+  }
108
+
80 109
   const columns = [
81 110
     {
82 111
       title: '头像',
@@ -179,13 +208,14 @@ function body(props) {
179 208
           )}
180 209
         </Form.Item>
181 210
         <Form.Item>
182
-          <AuthButton name="admin.customer.recommend.recommender.get" noRight={null}>
183 211
             <Button type="primary" htmlType="submit" className={Styles.SubmitButton}>
184 212
               搜索
185 213
             </Button>
186
-          </AuthButton>
187 214
         </Form.Item>
188 215
       </Form>
216
+      <Button type="primary" onClick={() => exportRecommendCustomer()} className={Styles.SubmitButton} style={{ marginTop: '5px', marginBottom: '5px' }}>
217
+        导出数据
218
+      </Button>
189 219
 
190 220
       <Table dataSource={dataSource.records} columns={columns} pagination={{ total: dataSource.total, onChange }} />
191 221
     </>

+ 0
- 2
src/pages/customer/report/index.jsx Прегледај датотеку

@@ -154,11 +154,9 @@ function body(props) {
154 154
           )}
155 155
         </Form.Item>
156 156
         <Form.Item>
157
-          <AuthButton name="admin.customer.recommend.report.get" noRight={null}>
158 157
             <Button type="primary" htmlType="submit">
159 158
               搜索
160 159
             </Button>
161
-          </AuthButton>
162 160
         </Form.Item>
163 161
       </Form>
164 162
       <Table style={{marginTop:'40px'}} dataSource={dataSource.records} columns={columns} pagination={{ total: dataSource.total, onChange }} />

+ 3
- 3
src/pages/integralMall/GoodsList.jsx Прегледај датотеку

@@ -185,14 +185,14 @@ function header(props) {
185 185
           )}
186 186
         </Form.Item>
187 187
         <Form.Item>
188
-          <AuthButton name="admin.taGoods.get" noRight={null}>
189 188
             <Button type="primary" htmlType="submit" className={styles.searchBtn}>
190 189
               搜索
191 190
             </Button>
192
-          </AuthButton>
193 191
         </Form.Item>
194 192
       </Form>
195
-      <Button type="danger" className={styles.addBtn} onClick={toEditGoods()}>新增</Button>
193
+      <AuthButton name="admin.taGoods.add.post" noRight={null}>
194
+        <Button type="danger" className={styles.addBtn} onClick={toEditGoods()}>新增</Button>
195
+      </AuthButton>
196 196
       <Table dataSource={data.records} columns={columns} pagination={false} />
197 197
       <div style={{ display: 'flex', justifyContent: 'flex-end', marginTop: '30px' }}>
198 198
         <Pagination showQuickJumper defaultCurrent={1} total={data.total} onChange={changePageNum} />

+ 2
- 1
src/pages/integralMall/exchangeRecords.jsx Прегледај датотеку

@@ -7,6 +7,7 @@ import moment from 'moment';
7 7
 import BuildSelect from '../../components/SelectButton/BuildSelect'
8 8
 import apis from '../../services/apis';
9 9
 import request from '../../utils/request'
10
+import AuthButton from '@/components/AuthButton';
10 11
 
11 12
 /**
12 13
   @param {*} props
@@ -182,7 +183,7 @@ function record(props) {
182 183
           <Form.Item>
183 184
             <Button type="primary" htmlType="submit" className={styles.searchBtn}>
184 185
               搜索
185
-          </Button>
186
+            </Button>
186 187
           </Form.Item>
187 188
         </div>
188 189
       </Form>

+ 7
- 2
src/pages/integralMall/writeOff.jsx Прегледај датотеку

@@ -6,6 +6,7 @@ import router from 'umi/router';
6 6
 import erweima from '../../assets/erweima.png';
7 7
 import saoma from '../../assets/saoma.png';
8 8
 import list from '../../assets/list.png';
9
+import AuthButton from '@/components/AuthButton';
9 10
 
10 11
 const { TabPane } = Tabs;
11 12
 function callback(key) {
@@ -41,7 +42,9 @@ class Dialog extends React.Component {
41 42
     const { visible, loading } = this.state;
42 43
     return (
43 44
       <div>
44
-        <Button type="primary" onClick={this.showModal} style={{ margin: '80px auto', display: 'block', padding: '6px 46px', backgroundColor: '#EA2323', border: 'none' }}>立即核销</Button>
45
+        <AuthButton name="admin.taPointsExchange.recId.put" noRight={null}>
46
+          <Button type="primary" onClick={this.showModal} style={{ margin: '80px auto', display: 'block', padding: '6px 46px', backgroundColor: '#EA2323', border: 'none' }}>立即核销</Button>
47
+        </AuthButton>
45 48
         <Modal
46 49
           style={{ marginTop: '20vh' }}
47 50
           visible={visible}
@@ -142,7 +145,9 @@ function header(props) {
142 145
           </Row>
143 146
           <div style={{ margin: '110px auto', display: 'block', textAlign: 'center' }}>
144 147
             <Input placeholder="请输入手机号" style={{ width: '200px' }} onChange={changeTel} />
145
-            <Button type="primary" style={{ marginLeft: '10px', padding: '6px 46px', backgroundColor: '#EA2323', border: 'none' }} onClick={verifyTel}>立即核销</Button>
148
+            <AuthButton name="admin.taPointsExchange.recId.put" noRight={null}>
149
+              <Button type="primary" style={{ marginLeft: '10px', padding: '6px 46px', backgroundColor: '#EA2323', border: 'none' }} onClick={verifyTel}>立即核销</Button>
150
+            </AuthButton>
146 151
           </div>
147 152
         </TabPane>
148 153
       </Tabs>,

+ 39
- 35
src/pages/news/list/NewsList.jsx Прегледај датотеку

@@ -9,6 +9,8 @@ import NewsTypeSelect from '../../../components/SelectButton/NewTypeSelect'
9 9
 import BuildSelect from '../../../components/SelectButton/BuildSelect'
10 10
 import SelectCity from '../../../components/SelectButton/CitySelect'
11 11
 
12
+import AuthButton from '@/components/AuthButton';
13
+
12 14
 
13 15
 const { Option } = Select;
14 16
 // eslint-disable-next-line @typescript-eslint/no-unused-vars
@@ -95,13 +97,12 @@ function body(props) {
95 97
         okText: '确认',
96 98
         cancelText: '取消',
97 99
         onOk() {
98
-          request({
99
-            url: '/api/admin/taNews/' + newsId,
100
-            method: 'DELETE',
101
-            // data: { ...row },
102
-          }).then((data) => {
100
+          request({ ...apis.news.delete, urlData: { id: newsId },}).then((data) => {
103 101
             message.info('操作成功!')
104 102
             getList({ pageNum: 1, pageSize: 10 });
103
+          }).catch((err) => {
104
+            console.log(err)
105
+            message.info(err.msg || err.message)
105 106
           })
106 107
         }
107 108
       });
@@ -125,13 +126,12 @@ function body(props) {
125 126
           okText: '确认',
126 127
           cancelText: '取消',
127 128
           onOk() {
128
-            request({
129
-              url: '/api/admin/taNews/' + newsId,
130
-              method: 'PUT',
131
-              data: { "newsStatus": newsStatus, "buildingId": buildingId, "newsTypeId": newsTypeId },
132
-            }).then((data) => {
129
+            request({ ...apis.news.cancel, data:{"newsStatus": newsStatus, "buildingId": buildingId, "newsTypeId": newsTypeId}, urlData: { id: newsId },}).then((data) => {
133 130
               message.info('操作成功!')
134 131
               getList({ pageNum: 1, pageSize: 10 });
132
+            }).catch((err) => {
133
+              console.log(err)
134
+              message.info(err.msg || err.message)
135 135
             })
136 136
           },
137 137
           onCancel() {
@@ -144,13 +144,12 @@ function body(props) {
144 144
           okText: '确认',
145 145
           cancelText: '取消',
146 146
           onOk() {
147
-            request({
148
-              url: '/api/admin/taNews/' + newsId,
149
-              method: 'PUT',
150
-              data: { "newsStatus": newsStatus, "buildingId": buildingId, "newsTypeId": newsTypeId },
151
-            }).then((data) => {
147
+            request({ ...apis.news.cancel, data:{"newsStatus": newsStatus, "buildingId": buildingId, "newsTypeId": newsTypeId}, urlData: { id: newsId },}).then((data) => {
152 148
               message.info('操作成功!')
153 149
               getList({ pageNum: 1, pageSize: 10 });
150
+            }).catch((err) => {
151
+              console.log(err)
152
+              message.info(err.msg || err.message)
154 153
             })
155 154
           },
156 155
           onCancel() {
@@ -167,25 +166,28 @@ function body(props) {
167 166
         cover={<img alt="example" src={data.newsImg} style={{ borderRadius: '12px 0 0 12px', width: '260px', height: '253px' }}></img>}
168 167
         bodyStyle={{ padding: '10px 20px' }}
169 168
       >
170
-        <span style={{ position: 'absolute', right: '20px', top: '20px', fontSize: ' 0.11rem', color: '#FF7E48' }} onClick={toEditList(data.newsId)}>
171
-          编辑
172
-                <Icon type="form" style={{ color: '#C0C4CC', marginLeft: '10px' }} />
173
-        </span>
174
-        {data.newsStatus === 0 ?
175
-          <span style={{ position: 'absolute', left: '280px', bottom: ' 0.11rem', fontSize: ' 0.11rem', color: '#FF7E48' }} onClick={cancelRelease.bind(this, data.newsId, 1, data.buildingId, data.newsType.newsTypeId)}>
176
-            取消发布
177
-              <Icon type="close-circle" style={{ color: '#C0C4CC', marginLeft: '8px' }} />
178
-          </span> :
179
-          <span style={{ position: 'absolute', left: '280px', bottom: ' 0.11rem', fontSize: ' 0.11rem', color: '#FF7E48' }} onClick={cancelRelease.bind(this, data.newsId, 0, data.buildingId, data.newsType.newsTypeId)}>
180
-            发布
181
-              <Icon type="form" style={{ color: '#C0C4CC', marginLeft: '8px' }} />
169
+        <AuthButton name="admin.taNews.id.put" noRight={null}>
170
+          <span style={{ position: 'absolute', right: '20px', top: '20px', fontSize: ' 0.11rem', color: '#FF7E48' }} onClick={toEditList(data.newsId)}>
171
+            编辑
172
+                  <Icon type="form" style={{ color: '#C0C4CC', marginLeft: '10px' }} />
182 173
           </span>
183
-        }
184
-
185
-        <span style={{ position: 'absolute', right: '20px', bottom: ' 0.11rem', fontSize: ' 0.11rem', color: '#FF7E48' }} onClick={changeNewsListStatus(data.newsId)}>
186
-          删除
174
+          {data.newsStatus === 0 ?
175
+            <span style={{ position: 'absolute', left: '280px', bottom: ' 0.11rem', fontSize: ' 0.11rem', color: '#FF7E48',zIndex:1 }} onClick={cancelRelease.bind(this, data.newsId, 1, data.buildingId, data.newsType.newsTypeId)}>
176
+              取消发布
177
+                <Icon type="close-circle" style={{ color: '#C0C4CC', marginLeft: '8px' }} />
178
+            </span> :
179
+            <span style={{ position: 'absolute', left: '280px', bottom: ' 0.11rem', fontSize: ' 0.11rem', color: '#FF7E48',zIndex:1 }} onClick={cancelRelease.bind(this, data.newsId, 0, data.buildingId, data.newsType.newsTypeId)}>
180
+              发布
181
+                <Icon type="form" style={{ color: '#C0C4CC', marginLeft: '8px' }} />
182
+            </span>
183
+          }
184
+        </AuthButton>
185
+        <AuthButton name="admin.taNews.id.delete" noRight={null}>
186
+            <span style={{ position: 'absolute', right: '20px', bottom: ' 0.11rem', fontSize: ' 0.11rem', color: '#FF7E48' }} onClick={changeNewsListStatus(data.newsId)}>
187
+                  删除
187 188
                 <Icon type="rest" style={{ color: '#C0C4CC', marginLeft: '8px' }} />
188
-        </span>
189
+            </span>
190
+        </AuthButton>
189 191
         <div style={{ position: 'absolute', left: '260px', top: '0px', padding: '20px' }}>
190 192
           <p style={{
191 193
             fontSize: ' 0.11rem', color: '#333', fontWeight: '600', marginBottom: '10px', overflow: 'hidden',
@@ -273,9 +275,11 @@ function body(props) {
273 275
           </Button>
274 276
         </Form.Item>
275 277
       </Form>
276
-      <Button type="danger" style={{ padding: '0 40px', margin: '20px 0' }} onClick={toEditList()}>
277
-        新增
278
-      </Button>
278
+      <AuthButton name="admin.taNews.post" noRight={null}>
279
+        <Button type="danger" style={{ padding: '0 40px', margin: '20px 0' }} onClick={toEditList()}>
280
+          新增
281
+        </Button>
282
+      </AuthButton>
279 283
 
280 284
       {/* 卡片内容,显示楼盘项目  */}
281 285
       <Row style={{ padding: ' 0 10px' }}>

+ 165
- 2
src/pages/news/list/editNewsList.jsx Прегледај датотеку

@@ -2,6 +2,7 @@ import React, { useState, useEffect } from 'react';
2 2
 import { Form, Input, Button, Icon, Select, Tabs, Radio, DatePicker,message } from 'antd';
3 3
 import { FormattedMessage } from 'umi-plugin-react/locale';
4 4
 import styles from '../../style/GoodsList.less';
5
+import apis from '../../../services/apis';
5 6
 import moment from 'moment';
6 7
 import router from 'umi/router';
7 8
 import BuildSelect from '../../../components/SelectButton/BuildSelect'
@@ -9,8 +10,16 @@ import NewsTypeSelect from '../../../components/SelectButton/NewTypeSelect'
9 10
 import XForm, { FieldTypes } from '../../../components/XForm';
10 11
 import Wangedit from '../../../components/Wangedit/Wangedit'
11 12
 import request from '../../../utils/request'
13
+import PosterBottom from '../../../assets/bottom.png'
14
+import ImageUploader from '../../../components/XForm/ImageUpload';
15
+import logo from '../../../assets/logo.png';
16
+import yinhao from '../../../assets/yinhao.png'
17
+import touxiang from '../../../assets/touxiang.jpg';
18
+import poster1 from '../../../assets/poster1.png';
19
+import poster2 from '../../../assets/poster2.png';
12 20
 
13 21
 const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
22
+const { TextArea } = Input;
14 23
 /**
15 24
  *
16 25
  *
@@ -118,11 +127,165 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
118 127
   }
119 128
   
120 129
   const Poster = (props) => {
121
-   return <div>Poster</div>
130
+    const [inputValue, changeInput] = useState('')
131
+    const [textAreaValue, changeTextArea] = useState('')
132
+    const [imgValue, changeImg] = useState('')
133
+    const [posterId, setPosterId] = useState('')
134
+
135
+    if(newsId){
136
+      useEffect(() => {
137
+        request({ ...apis.activity.poster, params: {targetId: newsId,targetType: 'news'} }).then((data) => {
138
+          console.log(data,"2222")
139
+          if(data.length > 0){
140
+            setPosterId(data[0].posterId)
141
+            changeImg(data[0].posterImg)
142
+            changeTextArea(data[0].posterDescription)
143
+            changeInput(data[0].posterTitle)
144
+          }
145
+        }).catch((err) => {
146
+          message.info(err.msg || err.message)
147
+        })
148
+      }, [])
149
+    }
150
+
151
+    const submitPoster  = () => {
152
+       if(newsId){
153
+        if(posterId){
154
+          request({ ...apis.activity.updatePoster, urlData: {id: posterId}, data: {targetId: newsId,targetType: 'news',posterImg: imgValue,posterTitle: inputValue,posterDescription: textAreaValue},}).then((data) => {
155
+            message.info("保存成功")
156
+          }).catch((err) => {
157
+            message.info(err.msg || err.message)
158
+          })
159
+         }else{
160
+          request({ ...apis.activity.addPoster, data: {targetId: newsId,targetType: 'news',posterImg: imgValue,posterTitle: inputValue,posterDescription: textAreaValue},}).then((data) => {
161
+            setPosterId(data.posterId)
162
+            message.info("保存成功")
163
+          }).catch((err) => {
164
+            message.info(err.msg || err.message)
165
+          })
166
+         }
167
+       }else{
168
+        message.warn("请先保存基本信息数据")
169
+       }
170
+    }
171
+
172
+    return <div>
173
+      <div style={{ display: 'flex' }}>
174
+        <div style={{ width: '420px', height: '900px', display: 'inline-block', marginTop: '30px' }}>
175
+          <div style={{ width: '375px', height: '785px', backgroundColor: '#fff', boxShadow: '0px 0px 16px 6px rgba(0,0,0,0.15)', position: 'relative', margin: '0 auto' }}>
176
+            <img style={{ width: '100%', height: '300px' }} src={imgValue ? imgValue : poster1} alt="" />
177
+            <div style={{ display: 'flex', alignItems: 'center', marginTop: '-24px' }}>
178
+              <img style={{ width: '70px', height: '70px', border: '4px solid #fff', borderRadius: '35px', marginLeft: '16px' }} src={touxiang} alt="" />
179
+              <span style={{ color: '#222', fontWeight: '600', margin: '24px 10px 0 14px', fontSize: '17px' }}>喵喵</span>
180
+              <span style={{ color: '#999', marginTop: '25px', fontSize: '17px' }}>邀您阅读</span>
181
+              <span style={{ color: '#999', margin: '25px 0 0 60px', fontSize: '17px' }}>2019.09.21</span>
182
+            </div>
183
+            <p style={{
184
+              margin: '10px 20px', fontSize: '20px', color: '#222', fontWeight: '600',
185
+              display: '-webkit-box', lineClamp: '3', height: '60px',
186
+              WebkitLineClamp: '2',
187
+              WebkitBoxOrient: 'vertical',
188
+              overflow: 'hidden',
189
+              textOverflow: 'ellipsis'
190
+            }}>{inputValue ? inputValue : '海报标题'}</p>
191
+
192
+            <img src={yinhao} style={{ width: '30px', marginLeft: '20px' }} alt="" />
193
+            <p style={{
194
+              margin: '16px 20px 28px 20px', fontSize: '17px', color: '#999',
195
+              display: '-webkit-box', lineClamp: '3', height: '76px',
196
+              WebkitLineClamp: '3',
197
+              WebkitBoxOrient: 'vertical',
198
+              overflow: 'hidden',
199
+              textOverflow: 'ellipsis'
200
+            }}>{textAreaValue ? textAreaValue : '海报描述'}</p>
201
+            <img src={PosterBottom} style={{ width: '100%' }} alt="" />
202
+          </div>
203
+          <p style={{ textAlign: 'center', fontSize: '19px', color: '#666', marginTop: '30px' }}>海报模板</p>
204
+        </div>
205
+
206
+        <div >
207
+          <div style={{ display: 'flex', width: '100%', margin: '60px 0' }}>
208
+            <p style={{ minWidth: '200px', color: '#222', textAlign: 'right', margin: '0 30px 0 0' }}>海报图片</p>
209
+            <ImageUploader value={imgValue} onChange={e => changeImg(e)} />
210
+          </div>
211
+          <div style={{ display: 'flex', alignItems: 'center', width: '100%', marginBottom: '60px' }}>
212
+            <p style={{ minWidth: '200px', color: '#222', textAlign: 'right', margin: '0 30px 0 0' }}>海报标题</p>
213
+            <Input style={{ width: '20vw' }} value={inputValue} placeholder="请输入海报标题" onChange={e => changeInput(e.target.value)} />
214
+          </div>
215
+          <div style={{ display: 'flex', margin: '10px 0 40px 0', width: '100%' }}>
216
+            <p style={{ minWidth: '200px', color: '#222', textAlign: 'right', margin: '0 30px 0 0' }}>海报描述</p>
217
+            <TextArea rows={5} value={textAreaValue} onChange={e => changeTextArea(e.target.value)} />
218
+          </div>
219
+
220
+        </div>
221
+      </div>
222
+      <Button type="primary" onClick={submitPoster} style={{ margin: '40px 40px 40px 30vw' }}> 确定</Button>
223
+      <Button onClick={() => router.go(-1)}>取消</Button>
224
+    </div>
225
+
122 226
   }
123 227
  
124 228
   const Share = (props) => {
125
-    return <div>Share</div>
229
+    const [inputValue, changeInput] = useState('')
230
+    const [imgValue, changeImg] = useState('')
231
+    const [shareContentId, setShareContentId] = useState('')
232
+    
233
+    if(newsId){
234
+      useEffect(() => {
235
+        request({ ...apis.activity.shareContent, params: {targetId: newsId,targetType: 'news'},}).then((data) => {
236
+          console.log(data,"2222")
237
+          if(data.length > 0){
238
+            setShareContentId(data[0].shareContentId)
239
+            changeImg(data[0].shareContentImg)
240
+            changeInput(data[0].shareContentTitle)
241
+          }
242
+        }).catch((err) => {
243
+          message.info(err.msg || err.message)
244
+        })
245
+      }, [])
246
+    }
247
+
248
+    const submitShare = () => {
249
+      if(newsId){
250
+        if(shareContentId){
251
+          request({ ...apis.activity.updateShareContent, urlData: {id: shareContentId},data: {targetId: newsId,shareContentType: 'news',shareContentImg: imgValue,shareContentTitle: inputValue},}).then((data) => {
252
+            message.info("保存成功")
253
+          }).catch((err) => {
254
+            message.info(err.msg || err.message)
255
+          })
256
+         }else{
257
+          request({ ...apis.activity.addShareContent, data: {targetId: newsId,shareContentType: 'news',shareContentImg: imgValue,shareContentTitle: inputValue},}).then((data) => {
258
+            setShareContentId(data.shareContentId)
259
+            message.info("保存成功")
260
+          }).catch((err) => {
261
+            message.info(err.msg || err.message)
262
+          })
263
+         }
264
+       }else{
265
+        message.warn("请先保存基本信息数据")
266
+       }
267
+    }
268
+
269
+    return <div style={{ padding: '20px' }}>
270
+      <div style={{ display: 'flex', margin: '10px 0 40px 0', width: '100%' }}>
271
+        <p style={{ minWidth: '200px', color: '#222', textAlign: 'right', margin: '0 30px 0 0' }}>分享模板</p>
272
+        <div>
273
+          <p style={{ display: 'flex', alignItems: 'center', fontSize: '14px', color: '#999', margin: '0', lineHeight: '0' }}><img src={logo} style={{ width: '22px', marginRight: '10px' }} />知与行互动</p>
274
+          <p style={{ fontSize: '16px', color: '#222', fontWeight: '600', margin: '0' }}>{inputValue ? inputValue : '置业V客厅 精准获客平台'}</p>
275
+          <img style={{ width: '200px', height: '140px' }} src={imgValue ? imgValue : poster2} alt="" />
276
+        </div>
277
+      </div>
278
+      <div style={{ display: 'flex', alignItems: 'center', width: '100%' }}>
279
+        <p style={{ minWidth: '200px', color: '#222', textAlign: 'right', margin: '0 30px 0 0' }}>海报标题</p>
280
+        <Input placeholder="请输入海报标题" value={inputValue} onChange={e => changeInput(e.target.value)} />
281
+      </div>
282
+      <div style={{ display: 'flex', width: '100%', marginTop: '40px' }}>
283
+        <p style={{ minWidth: '200px', color: '#222', textAlign: 'right', margin: '0 30px 0 0' }}>分享图片</p>
284
+        <ImageUploader value={imgValue} onChange={e => changeImg(e)} />
285
+      </div>
286
+      <Button type="primary" htmlType="submit" onClick={submitShare} style={{ margin: '40px 40px 40px 220px' }}> 确定</Button>
287
+      <Button onClick={() => router.go(-1)}>取消</Button>
288
+    </div>
126 289
   }
127 290
 
128 291
   return (

+ 35
- 15
src/pages/news/type/NewsType.jsx Прегледај датотеку

@@ -3,8 +3,9 @@ import { Form, Input, Button, Icon, Select, message, Table, Divider, Tag, Pagina
3 3
 import { FormattedMessage } from 'umi-plugin-react/locale';
4 4
 import styles from '../../style/GoodsList.less';
5 5
 import router from 'umi/router';
6
-import BuildSelect from '../../../components/SelectButton/BuildSelect'
7
-
6
+import BuildSelect from '../../../components/SelectButton/BuildSelect';
7
+import AuthButton from '@/components/AuthButton';
8
+import apis from '../../../services/apis';
8 9
 import request from '../../../utils/request'
9 10
 
10 11
 const { Option } = Select;
@@ -20,15 +21,12 @@ function header(props) {
20 21
 
21 22
   // 查询列表
22 23
   const getList = (params) => {
23
-    request({
24
-        url: '/api/admin/taNewsType',
25
-        method: 'GET',
26
-        params: { ...params },
27
-    }).then((data) => {
24
+    request({ ...apis.newsType.list, params: { ...params } }).then((data) => {
28 25
         console.log(data)
29 26
         setData(data)
30 27
     })
31 28
   }
29
+
32 30
   
33 31
   // 提交事件
34 32
   const handleSubmit = (e, props) => {
@@ -62,14 +60,22 @@ function header(props) {
62 60
       okText: '确认',
63 61
       cancelText: '取消',
64 62
       onOk() {
65
-        request({
66
-          url: '/api/admin/taNewsType/' + newsId,
67
-          method: 'DELETE',
68
-          data: { ...row },
69
-        }).then((data) => {
63
+        request({ ...apis.newsType.delete, urlData: { id: newsId },}).then((data) => {
70 64
           message.info('操作成功!')
71 65
           getList({ pageNum: 1, pageSize: 10 });
66
+        }).catch((err) => {
67
+          console.log(err)
68
+          message.info(err.msg || err.message)
72 69
         })
70
+
71
+        // request({
72
+        //   url: '/api/admin/taNewsType/' + newsId,
73
+        //   method: 'DELETE',
74
+        //   data: { ...row },
75
+        // }).then((data) => {
76
+        //   message.info('操作成功!')
77
+        //   getList({ pageNum: 1, pageSize: 10 });
78
+        // })
73 79
       }
74 80
     });
75 81
   }
@@ -99,8 +105,20 @@ function header(props) {
99 105
       dataIndex: 'handle',
100 106
       key: 'handle',
101 107
       align: 'center',
102
-      render: (x, row) => <><span style={{ color: '#EF273A', marginRight: '20px' }} onClick={changeNewsStatus(row, row.newsTypeId)}>{row.status == 1 ? '删除' : '上架'}<Icon type="shopping-cart" className={styles.shoppingCart} />
103
-                            </span><span style={{ color: '#FF925C' }} onClick={toEditNews(row.newsTypeId)}>编辑<Icon type="form" className={styles.edit} /></span></>,
108
+      render: (x, row) => (
109
+        <>
110
+          <AuthButton name="admin.taNewsType.id.delete" noRight={null}>
111
+            <span style={{ color: '#EF273A', marginRight: '20px' }} onClick={changeNewsStatus(row, row.newsTypeId)}>
112
+              {row.status == 1 ? '删除' : '上架'}<Icon type="shopping-cart" className={styles.shoppingCart} />
113
+            </span>
114
+          </AuthButton>
115
+          <AuthButton name="admin.taNewsType.id.put" noRight={null}>
116
+            <span style={{ color: '#FF925C' }} onClick={toEditNews(row.newsTypeId)}>
117
+              编辑<Icon type="form" className={styles.edit} />
118
+            </span>
119
+          </AuthButton>
120
+        </>
121
+      )
104 122
     },
105 123
   ];
106 124
 
@@ -118,7 +136,9 @@ function header(props) {
118 136
           )}
119 137
         </Form.Item>
120 138
       </Form>
121
-      <Button type="primary" className={styles.addBtn} onClick={toEditNews()}>新增</Button>
139
+      <AuthButton name="admin.taNewsType.post" noRight={null}>
140
+        <Button type="primary" className={styles.addBtn} onClick={toEditNews()}>新增</Button>
141
+      </AuthButton>
122 142
       <Table dataSource={data.records} columns={columns} pagination={false} />
123 143
       <div style={{ display: 'flex', justifyContent: 'flex-end', marginTop: '30px' }}>
124 144
         <Pagination showQuickJumper defaultCurrent={1} total={data.total} onChange={changePageNum} />

+ 0
- 53
src/pages/staff/list/addRole.jsx Прегледај датотеку

@@ -41,16 +41,6 @@ const Poster = props => {
41 41
     buttonList({ pageNum: 1, pageSize: 100 })
42 42
   }, [])
43 43
   // 当前所有的菜单
44
-  // function menuList(params) {
45
-  //   request({
46
-  //     url: '/api/admin/menuList',
47
-  //     method: 'GET',
48
-  //     params: { ...params },
49
-  //     // eslint-disable-next-line no-shadow
50
-  //   }).then(data => {
51
-  //     setData(data)
52
-  //   })
53
-  // }
54 44
   function menuList(params) {
55 45
     request({ ...apis.role.menuList, params: { ...params } }).then((data) => {
56 46
       setData(data)
@@ -61,18 +51,6 @@ const Poster = props => {
61 51
   }
62 52
 
63 53
   // 所有按钮
64
-  // function buttonList(params) {
65
-  //   request({
66
-  //     url: '/api/admin/buttonList',
67
-  //     method: 'GET',
68
-  //     params: { ...params },
69
-  //     // eslint-disable-next-line no-shadow
70
-  //   }).then(data => {
71
-  //     console.log(data)
72
-  //     setBuutonDate(data)
73
-  //   })
74
-  // }
75
-
76 54
   function buttonList(params) {
77 55
     request({ ...apis.role.buttonList, params: { ...params } }).then((data) => {
78 56
       setBuutonDate(data)
@@ -83,27 +61,6 @@ const Poster = props => {
83 61
 
84 62
 
85 63
   // 根据角色id查询当前的菜单及其按钮
86
-  // function buttonAndMenuList(params, id) {
87
-  //   console.log('id: ', id)
88
-  //   request({
89
-  //     url: `/api/admin/taRole/details/${id}`,
90
-  //     method: 'GET',
91
-  //     params: { ...params },
92
-  //     // eslint-disable-next-line no-shadow
93
-  //   }).then(data => {
94
-  //     console.log('data.roleName: ', data)
95
-  //     props.form.setFieldsValue({ roleName: data.roleName })
96
-  //     console.log(data)
97
-  //     setData(data)
98
-
99
-  //     // 获取所有的权限Id
100
-  //     if (data.sysMenuList) {
101
-  //       setDataMenuId(data.sysMenuList.map(item => item.menuId))
102
-  //       setDataButtonId((data.sysMenuList.map(item => item.sysButtonInMenu && item.sysButtonInMenu.map(btn => btn.btnId).join(',')).filter(f => f !== '').join(',').split(',')).map(a => parseInt(a)))
103
-  //     }
104
-  //   })
105
-  // }
106
-
107 64
   function buttonAndMenuList(params, ids) {
108 65
     request({ ...apis.role.buttonAndMenuList, urlData: { id: ids }, params: { ...params } }).then(data => {
109 66
       props.form.setFieldsValue({ roleName: data.roleName })
@@ -168,16 +125,6 @@ const Poster = props => {
168 125
       pathname: '/staff/RoleList',
169 126
     });
170 127
   }
171
-  // function updateAuthMenu(params) {
172
-  //   request({
173
-  //     url: '/api/admin/updateAuthMenu',
174
-  //     method: 'POST',
175
-  //     data: { ...params },
176
-  //     // eslint-disable-next-line no-shadow
177
-  //   }).then(data => {
178
-  //     toRoleList()
179
-  //   })
180
-  // }
181 128
 
182 129
   function updateAuthMenu(data) {
183 130
     request({ ...apis.role.updateAuthMenu, data: { ...data } }).then((data) => {

+ 25
- 0
src/pages/staff/list/editStaff.jsx Прегледај датотеку

@@ -26,6 +26,7 @@ const Edit = (props) => {
26 26
   const userId = props.location.query.userId
27 27
   const [userData, setUserData] = useState({})
28 28
   const [tagData, setTagData] = useState([])
29
+  const [roleData, setRoleData] = useState([])
29 30
 
30 31
   const getTagList = () => {
31 32
     request({ ...apis.staff.taTags, params: {pageNum:1,pageSize:999} }).then((data) => {
@@ -33,6 +34,13 @@ const Edit = (props) => {
33 34
     })
34 35
   }
35 36
 
37
+  const getRoleList = () => {
38
+    request({ ...apis.role.getRoleList, params: {pageNum:1,pageSize:999} }).then((data) => {
39
+      console.log(data)
40
+      setRoleData(data.records)
41
+    })
42
+  }
43
+
36 44
   // 查询列表
37 45
   const getUserData = (userId) => {
38 46
     request({ ...apis.staff.getTaUser, urlData: {id:userId} }).then((data) => {
@@ -43,6 +51,7 @@ const Edit = (props) => {
43 51
 
44 52
   useEffect(() => {
45 53
     getTagList();
54
+    getRoleList();
46 55
     if (userId) {
47 56
       getUserData(userId);
48 57
     }
@@ -103,6 +112,22 @@ const Edit = (props) => {
103 112
       placeholder: '请输入电话号码',
104 113
       value: userData.phone,
105 114
     },
115
+    {
116
+      label: '角色',
117
+      name: 'roleIds',
118
+      render: <Select
119
+                mode="multiple"
120
+                style={{ width: '100%' }}
121
+                placeholder="请选择标签"
122
+                onChange={tagsChange} >
123
+                  {roleData.map(item => (
124
+                    <Select.Option key={item.roleId} value={item.roleId}>
125
+                      {item.roleName}
126
+                    </Select.Option>
127
+                  ))}
128
+              </Select>,
129
+      value: userData.roleIds,
130
+    },
106 131
     {
107 132
       label: '标签',
108 133
       name: 'taTags',

+ 17
- 8
src/pages/system/housingPolicy.jsx Прегледај датотеку

@@ -7,7 +7,8 @@ import moment from 'moment';
7 7
 import SelectCity from '../../components/SelectButton/CitySelect'
8 8
 import BuildSelect from '../../components/SelectButton/BuildSelect'
9 9
 import apis from '../../services/apis';
10
-import request from '../../utils/request'
10
+import request from '../../utils/request';
11
+import AuthButton from '@/components/AuthButton';
11 12
 
12 13
 const { Option } = Select;
13 14
 const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
@@ -84,12 +85,18 @@ const toEditPolicy = (policyId) => () => {
84 85
       dataIndex: 'handle',
85 86
       key: 'handle',
86 87
       align: 'center',
87
-      render: (x,row) => <>
88
-                           <span style={{ color: '#1990FF' }} onClick={publicOrNoPublic(row)}>{ row.publishStatus === 0 ? '发布' : '取消发布' }<Icon type="close-circle" className={styles.edit} /></span>
89
-                           <span style={{ color: '#1990FF', marginRight: '20px' }} onClick={topPolicy(row)}>{ row.weight === 1 ? '取消置顶' : '置顶' }<Icon type="vertical-align-top" className={styles.edit} /></span>
90
-                           <span style={{ color: '#FF925C' }} onClick={toEditPolicy(row.policyId)}>编辑<Icon type="form" className={styles.edit} /></span>
91
-                           <span style={{ color: '#FF925C' }} onClick={deletePolicy(row.policyId)}>删除<Icon type="form" className={styles.edit} /></span>
92
-                         </>
88
+      render: (x,row) => (
89
+        <>
90
+          <AuthButton name="admin.taPolicy.id.put" noRight={null}>
91
+            <span style={{ color: '#1990FF' }} onClick={publicOrNoPublic(row)}>{ row.publishStatus === 0 ? '发布' : '取消发布' }<Icon type="close-circle" className={styles.edit} /></span>
92
+            <span style={{ color: '#1990FF', marginRight: '20px' }} onClick={topPolicy(row)}>{ row.weight === 1 ? '取消置顶' : '置顶' }<Icon type="vertical-align-top" className={styles.edit} /></span>
93
+            <span style={{ color: '#FF925C' }} onClick={toEditPolicy(row.policyId)}>编辑<Icon type="form" className={styles.edit} /></span>
94
+          </AuthButton>
95
+          <AuthButton name="admin.taPolicy.id.delete" noRight={null}>
96
+            <span style={{ color: '#FF925C' }} onClick={deletePolicy(row.policyId)}>删除<Icon type="form" className={styles.edit} /></span>
97
+          </AuthButton>
98
+        </>
99
+      )
93 100
     },
94 101
   ];
95 102
   
@@ -174,7 +181,9 @@ const handleSubmit = (e, props) => {
174 181
           </Button>
175 182
         </Form.Item>
176 183
       </Form>
177
-      <Button type="primary" className={styles.addBtn} onClick={toEditPolicy()}>新增</Button>
184
+      <AuthButton name="admin.taPolicy.post" noRight={null}>
185
+        <Button type="primary" className={styles.addBtn} onClick={toEditPolicy()}>新增</Button>
186
+      </AuthButton>
178 187
       <Table dataSource={data.records} columns={columns} pagination={false}/>
179 188
       <div style={{ display: 'flex', justifyContent: 'flex-end', marginTop: '30px' }}>
180 189
         <Pagination showQuickJumper defaultCurrent={1} total={data.total} onChange={changePageNum} />

+ 5
- 2
src/pages/system/intention.jsx Прегледај датотеку

@@ -9,7 +9,8 @@ import XForm, { FieldTypes } from '../../components/XForm';
9 9
 import Wangedit from '../../components/Wangedit/Wangedit'
10 10
 import apis from '../../services/apis';
11 11
 import request from '../../utils/request'
12
-import SelectCity from '../../components/SelectButton/CitySelect'
12
+import SelectCity from '../../components/SelectButton/CitySelect';
13
+import AuthButton from '@/components/AuthButton';
13 14
 
14 15
 const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
15 16
 /**
@@ -78,7 +79,9 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
78 79
               </Row>
79 80
     })}
80 81
     <Row>
81
-      <Button type="primary" className={styles.searchBtn} onClick={submitValue}>确定</Button>
82
+      <AuthButton name="admin.taBuildingIntentionAddOrUpdate.buildingId.post" noRight={null}>
83
+        <Button type="primary" className={styles.searchBtn} onClick={submitValue}>确定</Button>
84
+      </AuthButton>
82 85
     </Row>
83 86
     </>
84 87
   );

+ 5
- 2
src/pages/system/report.jsx Прегледај датотеку

@@ -8,7 +8,8 @@ import BuildSelect from '../../components/SelectButton/BuildSelect'
8 8
 import XForm, { FieldTypes } from '../../components/XForm';
9 9
 import Wangedit from '../../components/Wangedit/Wangedit'
10 10
 import apis from '../../services/apis';
11
-import request from '../../utils/request'
11
+import request from '../../utils/request';
12
+import AuthButton from '@/components/AuthButton';
12 13
 
13 14
 const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
14 15
 /**
@@ -56,7 +57,9 @@ const { MonthPicker, RangePicker, WeekPicker } = DatePicker;
56 57
       <Row>
57 58
         <Checkbox.Group options={data} value={checkData} onChange={onChange} />
58 59
       </Row>
59
-      <Button type="primary" className={styles.searchBtn} onClick={saveCheckedReport}>提交</Button>
60
+      <AuthButton name="admin.taBuildingReport.add.post" noRight={null}>
61
+        <Button type="primary" className={styles.searchBtn} onClick={saveCheckedReport}>提交</Button>
62
+      </AuthButton>
60 63
     </>
61 64
   );
62 65
  }

+ 60
- 18
src/services/apis.js Прегледај датотеку

@@ -5,10 +5,12 @@ export default {
5 5
     uploadForAnt: {
6 6
       url: `${prefix}/antd/image`,
7 7
       method: 'POST',
8
+      action: 'upload',
8 9
     },
9 10
     upload: {
10 11
       url: `${prefix}/image`,
11 12
       method: 'POST',
13
+      action: 'upload',
12 14
     },
13 15
   },
14 16
   user: {
@@ -26,7 +28,8 @@ export default {
26 28
     signout: {
27 29
       method: 'POST',
28 30
       url: `${prefix}/taUser/signout`,
29
-      logout: true
31
+      logout: true,
32
+      action: 'signout',
30 33
     },
31 34
   },
32 35
   building: {
@@ -85,6 +88,11 @@ export default {
85 88
       url: `${prefix}/apartment/deleted/id`,
86 89
       action: 'admin.apartment.deleted.id.delete',
87 90
     },
91
+    buildingSelect: {
92
+      url: `${prefix}/buildinglist/select`,
93
+      method: 'GET',
94
+      action: 'select',
95
+    }
88 96
   },
89 97
   buildingType: {
90 98
     getList: {
@@ -119,6 +127,28 @@ export default {
119 127
       url: `${prefix}/taNews`,
120 128
       action: 'admin.taNews.get',
121 129
     },
130
+    delete: {
131
+        method: 'DELETE',
132
+        url: `${prefix}/taNews/:id`,
133
+        action: 'admin.taNews.id.delete',
134
+    },
135
+    cancel: {
136
+        method: 'PUT',
137
+        url: `${prefix}/taNews/:id`,
138
+        action: 'admin.taNews.id.put',
139
+    },
140
+  },
141
+  newsType: {
142
+    list: {
143
+        method: 'GET',
144
+        url: `${prefix}/taNewsType`,
145
+        action: 'admin.taNewsType.get',
146
+      },
147
+    delete: {
148
+        method: 'DELETE',
149
+        url: `${prefix}/taNewsType/:id`,
150
+        action: 'admin.taNewsType.id.delete',
151
+    },
122 152
   },
123 153
   customer: {
124 154
     drift: {
@@ -186,47 +216,59 @@ export default {
186 216
       url: `${prefix}/customer/recommend/get/id`,
187 217
       action: 'admin.customer.recommend.get.id.get',
188 218
     },
219
+    customerRecommendRecommenderExport: { // 导出数据(推荐客户)
220
+      method: 'GET',
221
+      url: `${prefix}/customer/recommend/recommender/export`,
222
+      action: 'admin.customer.recommend.recommender.export.get',
223
+    },
189 224
   },
190 225
   indexEcharts: {
191 226
     userResource: {
192 227
       method: 'GET',
193
-      url: `${prefix}/selectUserResource`
228
+      url: `${prefix}/selectUserResource`,
229
+      action: 'userStatistics',
194 230
     },
195 231
     userBehavior: {
196 232
       summary: {
197 233
         method: 'GET',
198
-        url: `${prefix}/selectUserBehavior`
234
+        url: `${prefix}/selectUserBehavior`,
235
+        action: 'userBehaviorStatistics',
199 236
       },
200 237
       profile: {
201 238
         method: 'GET',
202
-        url: `${prefix}/selectEventAll`
239
+        url: `${prefix}/selectEventAll`,
240
+        action: 'behaviorIncident',
203 241
       },
204 242
     },
205 243
     userActive: {
206 244
       method: 'GET',
207
-      url: `${prefix}/selectActiveUserCount`
245
+      url: `${prefix}/selectActiveUserCount`,
246
+      action: 'selectActiveUserCount',
208 247
     },
209 248
     userSex: {
210 249
       method: 'GET',
211
-      url: `${prefix}/selectSexUser`
250
+      url: `${prefix}/selectSexUser`,
251
+      action: 'selectSexUser',
212 252
     },
213 253
     newUser: {
214 254
       method: 'GET',
215
-      url: `${prefix}/selectNewsUserCount`
255
+      url: `${prefix}/selectNewsUserCount`,
256
+      action: 'selectNewsUserCount',
216 257
     },
217 258
     userConversion: {
218 259
       method: 'GET',
219
-      url: `${prefix}/selectConversion`
260
+      url: `${prefix}/selectConversion`,
261
+      action: 'selectConversion',
220 262
     },
221 263
     intentionUsers: {
222 264
       method: 'GET',
223
-      url: `${prefix}/selectIntentionUser`
265
+      url: `${prefix}/selectIntentionUser`,
266
+      action: 'selectIntentionUser',
224 267
     },
225
-
226 268
     userCity: {
227
-      method:'get',
269
+      method: 'get',
228 270
       url: `${prefix}/selectCityUser`,
229
-      action: 'admin.selectCityUser.get'
271
+      action: 'admin.selectCityUser.get',
230 272
     },
231 273
 
232 274
   },
@@ -244,17 +286,17 @@ export default {
244 286
       cancel: {
245 287
         method: 'PUT',
246 288
         url: `${prefix}/buildingDynamic/cancel/:id`,
247
-        action: 'admin.buildingDynamic.cancel.dynamicId.put'
289
+        action: 'admin.buildingDynamic.cancel.dynamicId.put',
248 290
       },
249 291
       send: {
250 292
         url: `${prefix}/buildingDynamic/send/:id`,
251 293
         method: 'PUT',
252
-        action: 'admin.buildingDynamic.send.dynamicId.put'
294
+        action: 'admin.buildingDynamic.send.dynamicId.put',
253 295
       },
254 296
       finish: {
255 297
         url: `${prefix}/buildingDynamic/finish`,
256 298
         method: 'PUT',
257
-        action: 'admin.buildingDynamic.finish.put'
299
+        action: 'admin.buildingDynamic.finish.put',
258 300
       },
259 301
       details: {
260 302
         url: `${prefix}/buildingDynamic/Details`,
@@ -352,7 +394,7 @@ export default {
352 394
       url: `${prefix}/taPointsExchange/change`,
353 395
       method: 'PUT',
354 396
       action: 'admin.taPointsExchange.change.put',
355
-    }
397
+    },
356 398
   },
357 399
   carsuseFigure: {
358 400
     extendContent: {
@@ -379,7 +421,7 @@ export default {
379 421
       url: `${prefix}/extendContent`,
380 422
       method: 'POST',
381 423
       action: 'admin.extendContent.post',
382
-    }
424
+    },
383 425
   },
384 426
   system: {
385 427
     taPolicy: {
@@ -436,7 +478,7 @@ export default {
436 478
       url: `${prefix}/taBuildingReport/add`,
437 479
       method: 'POST',
438 480
       action: 'admin.taBuildingReport.add.post',
439
-    }
481
+    },
440 482
   },
441 483
   staff: {
442 484
     taUser: {